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

プレミアム急冷器 (6)
プレミアム急冷器 (Part 1) の続きです。さて、いよいよ冷却開始です。直接氷を投入するレトロ感にも驚きましたが、EXTRA COLD (クーラー) と違って、タイマーが付いていません。金色のスイ
Rack Sample 0
ここ数年、"理想のファイルシステムとは何か" というテーマで考え続けています。機器単体では RAID (Redundant Arrays of Independent Disks)
どなん (1)
先日の出張 (05/27 ? 06/09) でついに初めて飲みました。飲みましたというより、なめました。景色 (久高島) でも触れましたが、与那国島好きな私としては一度は試してみたい泡盛でした。沖縄本
アジフライ定食 (ライス 大)
柏や (豚肉生姜焼定食) の続きです。今日はアジフライ定食と決めていました。到着した時間がお昼真っ只中 12:30 頃だったので、さすがに座れないかなと思いきや、昨日の様にほぼ満席でありながらも座れま
ソーキそばセット
うちなぁ料理と古酒家 ニライカナイ (やさいそばセット) から 2 日と空けずに再訪しました。今回も過去 2 回同様 13:30 頃に訪れましたが、今日はほぼ満席でした。雨上がりでしたので、普段程には
Gala 青い海 (7)
去年の 2 月になりますが、景色 (Gala 青い海 2010) 以来約 3 年ぶりに Gala 青い海 をゆっくり訪れる時間がありました。2 月の 14 時頃でこの明るさと海の色です。これは 3 年
FreeBSD Logo
PHP 4.4.9 + OpenSSL 0.9.8 系の環境を OpenSSL 1.0.1j にアップデートした際に躓いた点を整理します。configure は通りますが make で以下の様にストッ
絆道 (2)
2014/04 頃から facebook 沖縄ユーザーグループ に自ら投稿する様になり、翌 5 月中旬にはとても気の合う友達が出来ました。非公開のグループを作成して沖縄に関すること以外でも語り合う中で
濃厚豚崩しつけ麺 + 大盛り (1)
去年の 8 月以来久しぶりに、いつも行列の出来る めん徳二代目つじ田 を訪れました。事前にホームページを見て、メニューが変わっていることに気がついたためです。以前は、つけめん (880 円), 二代目
印度チキンカレー (大盛り)
カリーライス専門店 エチオピア 本店 (No. 7 – 辛さ 65 – 70 倍) でついに辛さ 70 倍を極めた後、しばらくは堅気な辛さ ? で気を抜いてカレーを食べたいと思
Valid HTML5 Valid CSS3 Another HTML Lint