Home » Program » WordPress HTML5, CSS3 Valid (No. 3) (Tag: , , )

Facebook 向けに OGP (Open Graph Protocol) に対応する方が望ましいとした場合、やはり Valid にはなりません。

HTML5 + RDFa ? 等も考えられますが、発想を変えて Facebook との通信のみ meta property="og:XXX" を出力すれば良いのでは ? と考えました。

function wg_ogp() {
    $agent = $_SERVER['HTTP_USER_AGENT'];

    if (preg_match('/facebook/', $agent)) {
?>
<meta property="og:site_name" content="<?php bloginfo('name'); ?>" />
<meta property="og:title" content="<?php wg_title(); ?>" />
<meta property="og:description" content="<?php wg_desc() ?>" />
<meta property="og:type" content="article" />
<meta property="og:url" content="<?php echo wg_here(); ?>" />
<meta property="og:image" content="<?php wg_img() ?>" />
<meta property="fb:admins" content="100001699619269" />
<meta property="fb:app_id" content="365262713525479" />
<?php
    }
}

Validate ツール向けのみ出力 *しない* というルーチンでも良いですが、現状 Facebook 以外には無用なタグなので、上記の様に function.php に追記して header.php から呼んでいます。

# memo: http://developers.facebook.com/tools/debug

wg_ogp() 内にも wg_ で始まる関数がありますが、これは望む表示をするためにひと工夫した関数です。テンプレートにも依存しますが、一例を。

function wg_desc() {
    if (is_single()) {
        if (have_posts()) : while (have_posts()) : the_post();
            echo wg_the_content(100, 'r');
        endwhile; endif;
    } else {
        echo bloginfo('description');
    }
}

function wg_img() {
    if (is_single() && has_post_thumbnail()) {
        $img_id = get_post_thumbnail_id();
        $img    = wp_get_attachment_image_src( $img_id, 'evandr_slide');
        echo $img[0];
    } else {
        echo 'http://wg.drive.ne.jp/rose/wp-content/uploads/2012/04/2011080901-350x200.jpg';
    }
}

function wg_the_content($num, $mode = null) {   // tab.php sidebar.php
    $content = get_the_content($more_link_text, $stripteaser);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);

    $content = preg_replace('/<div .*>.*<\/div>/', '', $content);
    $content = str_replace("\n", '', $content);
    $content = strip_tags($content);
    $content = mb_substr($content, 0, $num);

    if ($mode && $mode == 'r') {
        return $content;
    } else {
        echo "$content";
    }
}

PHP のプログラマみたいですが、実は I Love Perl です。WordPress が PHP で作られているので、いたしかたありませんね。

Random Select

radserv X
radserv X (FreeBSD 9.1-RELEASE, DVD Install, Part 1) の続きです。BIOS 設定は初期化したままで進めないか、改めて試してみました。mountroo
三鷹の森ジブリ美術館 (10)
三鷹の森ジブリ美術館 (Part 1) の続きです。屋上庭園に上がると、天空の城ラピュタ のロボット兵がすぐに見えました。この日は 3 連休でもあってすごい人手でした。妙に韓国人か台湾人と思える方が多
川平湾 (23)
石垣島 (No. 8 ? 川平湾 Part 2) の続きです。日陰で波とたわむれてまったりした後は、スタート地点から左側 (方位は北) を目指してゆっくり散歩を始めました。着いた直後に川平公園入口で
玄米 (3)
長谷園 eco かまど (三合炊き – 玄米二合 ふたたび) の続きです。1, 2 回目は、火加減・水加減の違いのためか、会心の出来とは言えませんでした。長谷園 eco かまど (三合炊き
エチオピア 本店 1F 入口
ここ最近はすっかり豆カレーがお気に入りで、辛さ 40 – 50 倍も試しています。三鷹の森ジブリ美術館 (Part 1) は祭日に行きましたが、その前にわざわざエチオピアに行ってしまう程。
カツ丼 (1)
いよいよ出張最終日、久しぶりに 波布食堂 を訪れました。沖縄支店が西洲の時はここも度々訪れました。支店のスタッフは行くとなれば渋るか、覚悟を決めるかしないといけない場所の様です。何せ巨盛が普通盛りの見
辺戸岬 (伊是名島・伊平屋島)
沖縄出張 (No. 32 – ワルミ大橋 〜 古宇利島) を後にして、次はどこに行くか少々迷いました。以前訪れた北部の滝が ター滝 なのか、フンガー滝 だったか記憶が怪しいことが分かり、ど
Drive Network Philosophy
Drive Network のこだわり (SSL 証明書) に続いてご紹介。一般的なお客様にはなじみが薄いかもしれませんが、2004 年頃には Web サイトと Web ブラウザの通信の暗号化以外にも
WS-C2960S-48TS-L (1)
Drive Network Rack Gallery 2012 (Part 3) です。ラック正面の俯瞰です。コールドアイルと呼ばれる通路で、下の金網から冷気が吹き出し、ラック正面から機器が吸い込み背
高江洲そば
沖縄出張 (No. 3 – 高江洲そば) の続きです。高江洲そば は店舗移転のため 2013/05/20 より休業し、2013/06/10 に新店舗をオープンしたそうです。そのため前回 S
Valid HTML5 Valid CSS3 Another HTML Lint