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

2013 年産ダイヤモンド麦芽の恵み 初仕込 (4)
うまい ! がすごい。クリーミー生サーバー (Part 2) の "絶対もらえるキャンペーン" が終わると、シリアルナンバーの登録画面がすぐに次のキャンペーンの告知に切り替わりまし
radserv ZG1
現在 Drive Network で使用している主な機器の LAN Port と FreeBSD デバイス名の紐付けを整理しました。各機器共通事項として、em0 : ケーブル 白em1 : ケーブル
ざるそば
昔は大みそかの年越しそばを冷めた目で見て気にもしない時期もありましたが、ふと 3, 4 年前に "まぁ、乗ってみるのも良いか" と軽い気持ちで楽天を物色しました。近所の店舗で混んで
沖縄だより + お刺身 (東急ストア)
7 月に入ると、facebook 沖縄ユーザーグループ で "沖縄だより" の写真を見かけ始めました。しかしながら、少し前に似たパッケージを見た覚えがあるなと疑問に思って調べたとこ
FreeBSD Logo
sendmail 送信元 IP アドレス自動切替え (Part 1) の続きです。プログラム概要は以下の通りです。現在の送信元 IP アドレスと IP アドレスプールを取得。ブラックリストデータベース
サイゼリア 神田小川町店
サイゼリヤ (ランチメニュー) から 2 ヶ月程ご無沙汰していましたが、急にサイゼリアの "小エビのカクテルサラダ" が食べたくなり訪れてみました。あれ ? 行くとほぼ必ずオーダー
Firefox Logo
linux-firefox 12 では、ja-acroread9-9.4.2_1 の動作に問題はないと書きました。事前に Adobe Reader 9,カーネルモジュール使い FreeBSD で動作
Havana カレー (キーマ, ライス大盛り, ルー大盛り x 2, 辛さ 20 倍)
沖縄出張 (No. 20 – Havana CURRY ふたたび) の続きです。投稿としては Season 2 (2013/01/15 – 2013/01/26) 以来ですが、
Herb
アルバイトを含めても、20 年近く仕事をしてきて、一兵卒でいる期間より何らかの管理職を兼務している期間の方が大分長い中で考えていることの 1 つに、"上司をうまく利用する" という
雑貨さくら (5)
与那国島 (No. 13 – 雑貨さくら) が 2013/08/24 – 2013/08/28 の期間限定で東京に出店すると知り、楽しみにしていました。始めの方はきっと混雑もす
Valid HTML5 Valid CSS3 Another HTML Lint