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の中をまとめた記事がこちらになります。