WordPressにツイッターカードの設定をする方法

TwitterのTwitterカードの表示
公開日: 更新日:

ツイッターなどにWordPressのリンクを載せて投稿した時にサイトの写真を表示させるにはTwitter Cardsの設定が必要。
ここではTwitter Cardsの設定を説明する。

設定コード

以下のTwitterカードの設定コードを手直しする。

/*********************
 OGPタグ/Twitterカード設定を出力
 *********************/
 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 = 'ホームページとアイキャッチ画像がないページで表示される画像の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="summary_large_image" />' . "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を出力

以下を修正する。

  • ホームページとアイキャッチ画像がないページで表示される画像のURL
  • ツイッターのアカウント名
  • facebookのapp_id、設定する場合

修正後コード

以下が実際に貼り付けたコード
facebookのapp_idは削除している。

/*********************
 OGPタグ/Twitterカード設定を出力
 *********************/
 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 = 'https://hiroshitsuchiya.com/wp-content/uploads/2020/01/IMG_0271_800.jpg';
     }
 

     //出力する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="summary_large_image" />' . "n";
     $insert .= '<meta name="twitter:site" content="@roshispage" />' . "n";
     $insert .= '<meta property="og:locale" content="ja_JP" />' . "n";

     echo $insert;
   }
 } //END my_meta_ogp
 

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

functions.phpにコードを貼り付け

修正したコードを以下に貼り付ける。

ダッシュボード、外観、テーマエディター、右のテーマファイル、のテーマのための関数 (functions.php)、を選択。
ファイルの一番下に貼り付けてファイルを更新、ボタンをクリック。

functions.php

反映されたかどうかの確認

以下のサイトでサイトのURLを入力して確認

Twitter Cards Validator

貼付け後すぐは以下のようなエラーが出る。

Unable to render Card preview

ERROR: No card found (Card error)

しばらくすると以下のように表示される。

Twitter Cards Validator

Twitterの確認

反映まで時間がかかる。今回はまる1日かかった。
反映されると以下のように表示される。

TwitterでTwitterカードの表示

参考記事

【WordPress】OGPとTwitterカードをプラグイン無しで設定する方法

作成者: ひろし

ひろしつちや@婚活中です。 本業はフリーランスのプロマジシャンです。 こちらでは本業以外の事を書いていこうと思います。 記事の感想、コメント、質問などあればTwitterにお願いします。