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

WS-C2960S-48TS-L (1)
Cisco Catalyst 2960S IOS Update (Part 4) で設定を初期化した後、Cisco config backup Tool で収集したバックアップを元に新しい設定を投入し
R&D ファクトリー (4)
富山出張 (No. 1 – 株式会社エーティーワークス) の続きです。富山本社・データセンターの内部にも興味がありましたが、実際の組立現場にはもっと興味がありました。建物の 2F の入口か
Transcend JetFlash 530 64GB USB メモリ
VAIO Fit 13A (カスタマイズ – タッチパッド) の続きです。環境調整中に色々つまずいていますが、VAIO に問題がある訳ではなく Windows 8.1 Pro 固有の問題だ
41B0208 (3)
Drive Network Rack Gallery 2012 (Part 2) です。hp DL360 G5 モデルの背面です。オレンジ色のケーブルは Fibre Channel 用の光ケーブルで、
FreeBSD Logo
今回の適用内容は FreeBSD のバージョンよりインストールされている Perl のバージョンに依存するため、他の FreeBSD のバージョンや OS (CentOS, Mac OS 等) でも有
VAIO Fit 13A (背面)
Windows 8.1 でステータスバーに詳細表示する OldNewExplorer で "Windows 8.1 であれば Classic Shell を入れる程不便は感じていない&qu
Herb
Why rose ? で紹介した Herb とは意味合いが違いますが、先月社内横断プロジェクト Herb を決起しました。社内に限らず、自分の過去在籍した会社でも同様でしたし、また現在お付き合いのある
ロコモコ (テリヤキソース, 大盛り)
以前、銀座にサテライトオフィスを設けてそちらに勤務していたことがありました。日本一美味しいサバの塩焼き串八珍 (かつ丼)その時に開拓した Pour~cafe’ (プルーカフェ) に久しぶりに足を延ばし
ボンディ 通信販売 パッケージ (2)
欧風カレー ボンディ (チキンカレー レシピ) で東京出張に来たスタッフが、ボンディを恋しがっている話を小耳に挟みました。一方、ホームページ 欧風カレー ボンディ で通信販売をしていることも気が付いて
スーパーマック
マクドナルド 懐かしのメニュー (イントロ) の続き。第一弾は "スーパーマック" です。写真が残っていました。(Web 上にですが)価格は単品で 450 円。単品価格としては史上
Valid HTML5 Valid CSS3 Another HTML Lint