WordPressのOGPタグの設定(サンプル付)。 - inokawablog

WordPressのOGPタグの設定(サンプル付)。

まずは忙しい人のために。

functions.php

/**
* OGPタグ/Twitterカード設定を出力
*/
function meta_ogp() {
  if( is_front_page() || is_home() || is_singular() ){
    global $post;
    $ogp_title = '';
    $ogp_descr = '';
    $ogp_url = '';
    $ogp_img = '';
    $insert = '';

    if( is_singular() ) {
       setup_postdata($post);
       $ogp_title = $post->post_title;
       $ogp_descr = mb_substr(get_the_excerpt(), 0, 100);
       $ogp_url = get_permalink();
       wp_reset_postdata();
    } elseif ( is_front_page() || is_home() ) {
       $ogp_title = get_bloginfo('name');
       $ogp_descr = get_bloginfo('description');
       $ogp_url = home_url();
    }
    //og:type
    $ogp_type = ( is_front_page() || is_home() ) ? 'website' : 'article';
    //og:image
    if ( is_singular() && has_post_thumbnail() ) {
       $ps_thumb = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full');
       $ogp_img = $ps_thumb[0];
    } else {
     $ogp_img = 'ダミーの画像のurl';
    }
    $insert .= '<meta property="og:title" content="'.esc_attr($ogp_title).'" />' . "\n";
    $insert .= '<meta property="og:description" content="'.esc_attr($ogp_descr).'" />' . "\n";
    $insert .= '<meta property="og:type" content="'.$ogp_type.'" />' . "\n";
    $insert .= '<meta property="og:url" content="'.esc_url($ogp_url).'" />' . "\n";
    $insert .= '<meta property="og:image" content="'.esc_url($ogp_img).'" />' . "\n";
    $insert .= '<meta property="og:site_name" content="'.esc_attr(get_bloginfo('name')).'" />' . "\n";

    $insert .= '<meta name="twitter:card" content="summary_large_image" />' . "\n";
    $insert .= '<meta name="twitter:site" content="{@twitter_id}" />' . "\n";

    $insert .= '<meta property="og:locale" content="ja_JP" />' . "\n";
    //facebookのapp_id(設定する場合)
    $insert .= '<meta property="fb:app_id" content="{facebook_app_id}">' . "\n";
    echo $insert;
  }
}
add_action('wp_head','meta_ogp');

 

 

ご自身で入力してもらうのはたった3箇所

  • ダミー画像のurl
  • twitter:site
  • fb:app_id

ダミー画像のurlはサムネイルがない場合に表示させるやつです。これでいいと思います

@twitter_idは、ご自身で使われているtwitter_idを入力してください。twitter_idはhttps://twitter.com/から  プロフィール  から名前の下にあります。

fb:app_idは、こちらから取得できます。

 

はい終わりです。解説をしていきます。

 

解説

上から解説していきます。

if( is_singular() ) { //記事&固定ページ
       setup_postdata($post);
       $ogp_title = $post->post_title;
       $ogp_descr = mb_substr(get_the_excerpt(), 0, 100);
       $ogp_url = get_permalink();
       wp_reset_postdata();
    } elseif ( is_front_page() || is_home() ) { //トップページ
       $ogp_title = get_bloginfo('name');
       $ogp_descr = get_bloginfo('description');
       $ogp_url = home_url();
    }

 

og:title  と  og:description  と og:url  の設定

記事・固定ページの場合、

タイトルは投稿記事のタイトル、ディスクリプションは100文字の記事抜粋、urlはページリンクです。

トップページの場合、

タイトルはサイトのタイトル、ディスクリプションはキャッチフレーズ、urlはトップページのurlです。です。全て管理画面の「設定  >  一般」で設定された値を使用しています。

 

//og:type
    $ogp_type = ( is_front_page() || is_home() ) ? 'website' : 'article';
    //og:image
    if ( is_singular() && has_post_thumbnail() ) {
       $ps_thumb = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full');
       $ogp_img = $ps_thumb[0];
    } else {
     $ogp_img = 'ダミーの画像のurl';
    }

og:type  : ページの種類を指定

ページタイプの設定はトップページならwebsite、それ以外のページはarticleにしています。

 

og:image  :  SNS上で表示させたい画像を絶対パスで指定します。

画像のurlを取得したいので、wp_get_attachment_image_src(添付された画像ファイルの"url"、"width"、"height"属性を配列として返す関数)から、配列の最初のurlを取得します。

 

サムネイルがなかったら代わりのダミーの画像を表示させます。

 

$insert .= '<meta property="og:title" content="'.esc_attr($ogp_title).'" />' . "\n";
    $insert .= '<meta property="og:description" content="'.esc_attr($ogp_descr).'" />' . "\n";
    $insert .= '<meta property="og:type" content="'.$ogp_type.'" />' . "\n";
    $insert .= '<meta property="og:url" content="'.esc_url($ogp_url).'" />' . "\n";
    $insert .= '<meta property="og:image" content="'.esc_url($ogp_img).'" />' . "\n";
    $insert .= '<meta property="og:site_name" content="'.esc_attr(get_bloginfo('name')).'" />' . "\n";

    $insert .= '<meta name="twitter:card" content="summary_large_image" />' . "\n";
    $insert .= '<meta name="twitter:site" content="{@twittter_id}" />' . "\n";

    $insert .= '<meta property="og:locale" content="ja_JP" />' . "\n";
    //facebookのapp_id(設定する場合)
    $insert .= '<meta property="fb:app_id" content="{app_id}">' . "\n";
    echo $insert;

 

先ほど各ページで設定したものを出力するものです。

twitter:site  :  contentには@twitter_idのところにご自身で使われているtwitter_idを入力してください。twitter_idはhttps://twitter.com/から  プロフィール  から名前の下にあります。

fb:app_id  :  contentにはfacebookのapp_idを入力してください。取得方法はこちら

 

これで以上になります。

まとめ

headの中をまとめた記事がこちらになります。