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

ボンディ 通信販売 ビーフカレー (5)
自宅 de ボンディ (Part 2) の続きです。2 回目1 回目は土曜日のランチ、2 回目は翌日日曜日のランチです。"お酒は我慢出来てもカレーは難しい" 私にとって、2 日連続
VAIO Fit 13A (背面)
Windows 8.1 でステータスバーに詳細表示する OldNewExplorer で "Windows 8.1 であれば Classic Shell を入れる程不便は感じていない&qu
FreeBSD Logo
Drive Network を利用しているお客様すべてのメールが メールゲートウェイ 構成図 Gateway3 から送信されるため、送信先によっては spam を受け取ったと解釈する場合もあり、Gat
冷たいおそば (ざる)
ゆで太郎 錦町店 (かきあげ) で ゆで太郎 には初めて入りました。その帰り際に気になった"特もり" を改めて良く眺めると、普通サイズの 3 倍と書かれていました。方や ゆで太郎
Lavender
現在の東京オフィスでは、健康診断が毎年 2 月にあります。おそらく今年初めてだったとは思いますが眼底検査というものを行い、緑内障の疑いがあると診断されました。ショックでした。腰痛に歯痛、今度は眼ですか
三線自動演奏機 (2)
銀座わしたショップ 2014/06/13 (夏季限定醸造生ビール 夏いちばん) の続きです。三線の演奏は夏いちばんの大量陳列の後ろ、入口のすぐ右手側から聞こえて来ましたが、なんと、機械の演奏です。畳の
久高島 (1)
沖縄では 6/23 頃梅雨明けしたそうですね。梅雨明けましておめでとうございます。今年の夏もよろしくお願いします。(笑)今回は沖縄本島からフェリーで 20 分程度の距離にある久高島を散策した時の景色を
ARROWS X F-10D
ARROWS X F-10D (No. 2) の続きです。電池が多少持つ様になりましたARROWS X F-10D (No. 1) で使い始めた際の電池の消耗の速さが幾分か緩和出来ました。朝フル充電し
ビーフ + 野菜カレー (ルー大盛り, 辛さ 70 倍)
カリーライス専門店 エチオピア 本店 (No. 13 – 辛さ 70 倍メドレー 1) を投稿した時は、まさか全メニューを辛さ 70 倍で横断するとは思っていませんでしたが、我ながら凝り性
FreeBSD Logo
FreeBSD Brute Force Attack Counter Tool (No. 1) の続きです。ハッシュリファレンスを多用しています。理解している前提で書いているので予めご了承ください。処
Valid HTML5 Valid CSS3 Another HTML Lint