OGPのog:typeでwebsiteやblogを設定するときの注意点とPHPでの振り分け方法

  • あとで読みたい人は…

ただいまhead部分をコーディング中の@cappeeです。

OGPについては以前も何度か記事を書いてますが、今回は og:type についての注意点です。

前回の記事はこちらからどうぞ。
ソーシャルボタンの設置まとめとボタンの幅や吹き出しの直し方、コーディング方法など
FacebookのOGPに fb:admins と fb:app_id の設定は必要?htmlタグのxmlnsは?
「Open Graph Pro」を今すぐ停止し、プラグインを使わずにFacebookのOGPを設定すべし

og:typeでwebsiteやblogを設定するときの注意点

OGPのog:typeの設定方法をみると、ウェブサイトには「website」と記述し、ブログには「blog」と記述するように書かてれいます。

ウェブサイトの場合

<meta property="og:type" content="website"/>

ブログの場合

<meta property="og:type" content="blog"/>

間違いではないのですが、これだけだと不十分なのです。

website や blog の指定は基本的にドメインのルート部分にのみ存在すべきで、トップページ以外は article と指定しましょう。

下層ページの場合

<meta property="og:type" content="article"/>

PHPでの振り分け方法

PHPを使用出来るサーバーやWordpressを使っている場合は、このようにトップページとそれ以外の下層ページで記述を振り分けます。

ウェブサイトの場合

<meta property="og:type" content="<?php if($_SERVER["REQUEST_URI"] == "/"){ ?>website<?php } else { ?>article<?php }?>">

ブログの場合

<meta property="og:type" content="<?php if($_SERVER["REQUEST_URI"] == "/"){ ?>blog<?php } else { ?>article<?php }?>">

この振り分けを応用すれば、タイトルの表示方法をトップページと下層ページで変えたりと便利ですよ。

【2016.11.20 追記】
コメントにてご指摘いただきました。
サーバ環境によって必ずしも”/”が帰ってくるとは限らない$_SERVER["REQUEST_URI"]で判断せず、以下のようにした方がよいとのことです。
ご指摘ありがとうございます。

if ( is_front_page() || is_home() ) {
echo '';
} else {
echo '';
}

【2017.07.06 追記】
さらにご指摘いただきました。
コメントをそのまま引用させていただきます。

is_front_pageとかはwordpressの関数ですな。
あと、ifとかで振り分けるのは若干冗長かも。
$_SERVER['REDIRECT_URL'] は確かに返ってくる値が違うので
http://xxxxx.jp/
http://xxxxx.jp/index.php
だと違う結果になります。
上記踏まえて、私は
echo(($_SERVER['REDIRECT_URL']==”/” || $_SERVER['REDIRECT_URL']==”")?”website”:”article”);
こげな感じです。
Pocket
article clipper OGPのog:typeでwebsiteやblogを設定するときの注意点とPHPでの振り分け方法

4 thoughts on “OGPのog:typeでwebsiteやblogを設定するときの注意点とPHPでの振り分け方法

  1. Pingback: WordPress の OGP をプラグインを使わずに設定する。og:description は本文から自動生成。 | 雑記 BOOOKs

  2. サーバ環境によって必ずしも”/”が帰ってくるとは限らない$_SERVER["REQUEST_URI"]で判断せず、
    if ( is_front_page() || is_home() ) {
    echo '';
    } else {
    echo '';
    }

    のようにした方がよいのではないでしょうか。

  3. is_front_pageとかはwordpressの関数ですな。

    あと、ifとかで振り分けるのは若干冗長かも。
    $_SERVER['REDIRECT_URL'] は確かに返ってくる値が違うので
    http://xxxxx.jp/
    http://xxxxx.jp/index.php
    だと違う結果になります。

    上記踏まえて、私は

    echo(($_SERVER['REDIRECT_URL']==”/” || $_SERVER['REDIRECT_URL']==”")?”website”:”article”);

    こげな感じです。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)