Twitterカードなどを表示する方法/WordPress

Twitterカードというのは、ツイートに表示される画像および抜粋などの文字による情報です。これはURLをツイートに含めると表示されます。メリットとしては、クリック率が1.5%から3%に上がるという情報があります。

Twitterカードを表示するには、プラグインを使うと簡単ですが、functions.phpを編集した方が、おそらく、表示速度の点で有利です。

functions.phpに下記の行を追加し、下に記載した変更すべき箇所を書き直せばいいです。

//START my_meta_ogp

function my_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 = 'TOPページ&アイキャッチ画像がないときに使われる画像のURL';
    }

    //出力するOGPタグをまとめる
    $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="<span style="color:#ff0000;">summary_large_image</span>" />' . "\n";
    $insert .= '<meta name="twitter:creator" content="ツイッターのアカウント名" />' . "\n";
    $insert .= '<meta name="twitter:site" content="ツイッターのアカウント名" />' . "\n";
    $insert .= '<meta property="og:locale" content="ja_JP" />' . "\n";

    //facebookのapp_id(設定する場合)
    $insert .= '<meta property="fb:app_id" content="ここにappIDを入力">' . "\n";
    //app_idを設定しない場合ここまで消す

    echo $insert;
  }
}

//END my_meta_ogp

add_action('wp_head','my_meta_ogp');//headにOGPを出力

変更箇所の説明

     $ogp_img = 'TOPページ&アイキャッチ画像がないときに使われる画像のURL';

何を指定してもいいですが、普通は、サイトアイコンかな。httpsまたはhttpから始めます。自分のサイトがSSL対応のサイトなら、httpsで始めた方がいいです。

    $insert .= '' . "\n";

summary_large_imageまたはsummaryです。

summary_large_imageにすると、大きな横長の画像が表示されます。summaryにすると、小さな正方形の画像と右側に抜粋が出ます。summary_large_imageの方が印象的ですが、アスペクト(縦横比)が変わったりする場合、画像がみっともないものになります。

    $insert .= '' . "\n";

@マークで始まるTwitterのアカウント名を入れます。カードの下部に自分の登録サイトのURL(ドメインだけ)がリンクになって表示されます。いらないかもしれません。その場合はこの部分を丸ごと削除して下さい。

    $insert .= '' . "\n";

@マークで始まるTwitterのアカウント名を入れます。

    //facebookのapp_id(設定する場合)
    $insert .= '' . "\n";
    //app_idを設定しない場合ここまで消す

facebookはやっていないので、このコードを使うとどういうことになるのか知りませんが、いらない場合は、この緑色の部分を全部削除する必要があります。

確認する

ツイートに表示されているURLを右クリックしてコピーします。短縮URLがコピーされると思いますが、この短縮URLを下記サイトで入力すると、右側に表示されます。

Twitter Card Validator

この機能は、後からアイキャッチ画像を設定した場合などに早く反映させたい場合にも使えます。私はもっぱらそのために使っています。なお、放置しておいても、そのうち変更されます。

参考ページ:
【WordPress】OGPとTwitterカードをプラグイン無しで設定する方法(サルワカ)

※ここに掲載したコードは、上記のサイトで紹介されているコードを若干改変したものです。