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

松藤 限定古酒 43 度 (3)
沖縄本島 (No. 6 – 打ち上げ) で衝撃を受けた 松藤【限定古酒】43 度 を、東京に戻ってからも飲んでみようと考えていたところ、今も同僚でもある打ち上げのメンバーからプレゼントして
FreeBSD Logo
Becky! では "スレッド表示" している場合、メールの見出しを右クリック -> スレッドツールで親メールに該当のメールを子どもとしてひも付ける機能があります。Gmail
カジキの刺身
与那国島 (No. 9 – Dr. コトー診療所 Part 3) の続きです。念願の Dr. コトー診療所を満喫して 15:00 過ぎ。与那国島 (No. 1 ? 出発) の通りほぼ寝ずに
ESXi 5.1 Install - NG (Boot image is corrupted)
ある日、予備機に VMware ESXi 5.1.0 Update 1 をインストールしました。ISO イメージ自体が 300 MB 強でじわじわと時間が掛かりますが、これからまさにインストーラが起動
牛赤身ひき肉 (9)
自宅 de タコライス (S&B タコスシーズニング Part 1) の続きです。タコスミートS&B タコスシーズニング は 1 パックに 2 袋入りで、1 袋 (8g) をひき肉 1
東京国際展示場 (2)
2013/05/08 – 2013/05/10 で開催されている クラウド コンピューティング EXPO に足を運んでみました。従来この手のイベントには参加しませんが、今もなお定義が確固と
プレミアムベルギーチョコソフト (期間限定)
久しぶりに ミニストップ (ベルギーチョコソフト) を食べに訪れてみたところ、プレミアムベルギーチョコソフト が期間限定で発売されていることを知りました。クーベルチュールチョコレート。味の想像がまった
Drive Network Philosophy
Movable Type 6.0 (mt_author テーブル author_password カラム) で使用する暗号化されたパスワードを作成するため、ソースファイルを参考にスクリプト化しました。
VAIO Fit 13A (背面)
VAIO Fit 13A (到着) 後、カスタマイズを続けています。VAIO は素の Windows 8.1 Pro とは異なるオリジナルのアプリケーションも多々インストールされているので、Virtu
らーめん 中 (きゃべつ) + トッピング (もやし + ほうれん草増)
横浜らーめん武蔵家 (全部入り) の続きです。さて、気になっていたトッピング もやしを試すべく、また日を空けずに訪れました。普段は "ほうれん草増 らーめん 中" に "
Valid HTML5 Valid CSS3 Another HTML Lint