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

東急ハンズ 宜野湾コンベンションシティ店
沖縄で多店舗展開しているサンエーの新店が 宜野湾コンベンションシティ で、7/5 にオープンします。# "サンエーはイトーヨーカドーみたいな感じ" と言うと、ないちゃーは大抵理解し
石垣島ドリーム観光 (3)
石垣島 (No. 11 – 石垣御神埼灯台) の続きです。前日は石垣島をほぼ一周しましたが、翌日 05/06 は黒島を訪れることにしていました。石垣港離島ターミナルは数年前に西表島を訪れて
牛肩ロース 1kg (2)
ハッシュ・ド・ビーフの作り方 (No. 1) の続きです。牛肩ロース次は牛肩ロースを親指や人差し指大に細長く切って、塩・ブラックペパー・赤ワインで味付けしつつ強火で焼く。ミディアム程度かな。焼き終われ
肉カレーうどん (大盛)
記事の投稿は 1 年以上空きましたが、その後も定期的に通っています。いつもたいてい 14 時を過ぎたあたりに訪れますが、やや早く着いてしまうともう 14 時前だというのにこの行列。この日は 30 人近
すし銚子丸 船橋店
千葉県船橋市に 15 年住んだ後、足立区綾瀬に 8 年程住んでいますが、そのどちらにも自宅近所に すし銚子丸 (千葉・東京・埼玉・神奈川のお寿司屋さん) があります。船橋の時は後半 5 年くらいで初め
サーモン西京焼 (1)
いさば (サバ) から時間を空けずに訪れました。今日こそは、気にはなりつつも試していなかったサーモン西京焼 + 納豆 + のりで豪華ランチ (?) と決め込んで訪れました。地下の入口に下る途中に、おそ
名護の湧水 (2)
伊江島 (No. 5 – また来るさ) の続きです。本部港を出て、当初は名護市で有名な カレーと珈琲の店 たんぽぽ を訪れる予定でした。伊江島でのランチがかなり遅めだったこともあり、お腹が
Herb
どんなポジションで仕事をしていても、仕事をしていくにつれておいしい仕事 (言われなくても進んでやりたい仕事)可も不可もなく淡々とこなすべき仕事やりたくない仕事 (後回しにしたいか、人に任せたい仕事)と
特製チャンポン 野菜増し + トンカラ (80g)
記事にするのは 6 ヶ月ぶりですが、銀座は定期的に通っているので ハカタノチカラ (特製チャンポン 野菜増し) は何度か食べに行っています。いつ食べても、チャンポン野菜増しではなく "野菜ス
魯肉飯 (ランチセット, 大盛り)
一茶一会 (印度チキンカレー) から日を空けずして再び訪れました。気になっていた魯肉飯 (豚の角煮) にチャレンジしてみたかったからです。前回訪れた週末の看板には、印度チキンカレーの横に "
Valid HTML5 Valid CSS3 Another HTML Lint