サポート » プラグイン » all in one SEO packを使い各記事に設定したタイトルが、facebookで表示されない

  • 解決済 nipper1122

    (@nipper1122)


    いつもお世話になっております。

    テーマはオリジナルのものを使用しています。

    All in one SEO packを使い、各記事に、記事内のタイトル(A)とは別に、タイトル(B)とdescriptionを記入しました。

    facebookに各記事のURLを貼付けてみると、descriptionは出てくれるのですが、タイトルが記事内タイトル(A)のままになってしまいます。

    googleで検索した時には、ちゃんと設定したタイトル(B)がでてきて、descriptionもしっかりでます。

    all in one SEOを使用した際に、OGP設定をするためにこちらのサイト「ゆめぴょんの知恵:【ブログ術】FacebookのOGP設定をプラグインなしで設置する方法」を参考に、headerを変更しました。

    変更後のheaderです↓

    <! DOCTYPE html PUBLIC ".//W3C//DTD XHTML 1.0
    Transitional//EN" "http://w3.org/TR/xhtml1/DTD/xhtml1-transitonal.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml”>
    
    <?php
         $type = "website";
         if ( is_home() ) {
              $title = get_bloginfo('name');
              $dsc = get_bloginfo('description');
              $url = get_bloginfo('url');
         } elseif ( is_single() || is_page() ) {
              $type = "article";
              $title = get_the_title() . " - " . get_bloginfo('name');
              $dsc = get_post_meta($post->ID, _aioseop_description, true);
              if( $dsc == NULL ) {
                   $dsc = strip_tags($post->post_content);
                   $dsc = ereg_replace("(\r\n|\r|\n| | |\t)", "", $dsc);
                   $dsc = mb_substr($dsc, 0, 100). "...";
              }
              $url = get_permalink();
         } elseif ( is_category() ) {
              $cat_name = single_cat_title( '',false );
              $cat = get_term_by('name', $cat_name, 'category');
              $title = $cat_name . "のおすすめ記事一覧 - ".  get_bloginfo('name');
              $dsc = $cat_name . "のおすすめ記事一覧です。" . get_bloginfo('description');
              $url = get_category_link( $cat->term_id );
         } elseif( is_tag() ) {
              $tag_name = single_tag_title('',false);
              $tag = get_term_by('name', $tag_name, 'post_tag');
              $title = $tag_name . "のおすすめ記事一覧 - ". get_bloginfo('name');
              $dsc = $tag_name . "のおすすめ記事一覧です。" . get_bloginfo('description');
              $url = get_bloginfo('url') . "/tag/" . $tag->slug . "/";
         }
    ?>
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# <?php echo $type .': http://ogp.me/ns/'. $type .'#' ?>">
    <meta charset="UTF-8" />
    <title><?php echo $title; ?></title>
    <meta name="description" content="<?php echo $dsc; ?>”>
    
    <meta http-wquiv="Content-Type" content="<?php bloginfo('html_type'); ?>;charset=<?php bloginfo('charset'); ?>" />
    
    <title><?php bloginfo('name'); ?>
    <?php wp_title(); ?></title>
    
    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
    
    <link rel="alternate" type="application/rss+xml" title="RSS フィード" href="<?php bloginfo('rss2_url'); ?>" />
    
    <?php
    if ( is_singular() && get_option( 'thread_comments' ) )
    wp_enqueue_script( 'comment-reply' );
    
    wp_head();
    ?>
    <!-- ここからOGP -->
    <meta property="og:type" content="<?php echo $type ?>">
    <?php if($type == "article"){ ?>
         <meta property="article:publisher" content="https://www.facebook.com/suliko.moo"/>
         <!--<meta property="article:author" content="https://www.facebook.com/keisuke.nishida.52"/>-->
    <?php } ?>
    <meta property="fb:admins" content="1035440791">
    <meta property="og:locale" content="ja_JP">
    <meta property="og:title" content="<?php echo $title ?>">
    <meta property="og:url" content="<?php echo $url ?>">
    <meta property="og:description" content="<?php echo $dsc ?>">
    <meta property="og:site_name" content="<?php bloginfo('name'); ?>">
    <?php
         $str = $post->post_content;
         $searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i';//投稿にイメージがあるか調べる
         if (is_single() or is_page()){//単一記事ページか固定ページの場合
              if (has_post_thumbnail()){//投稿にサムネイルがある場合の処理
                   $image_id = get_post_thumbnail_id();
                   $image = wp_get_attachment_image_src( $image_id, 'full');
                   echo '<meta property="og:image" content="'.$image[0].'">';echo "\n";
              } elseif ( preg_match( $searchPattern, $str, $imgurl ) && !is_archive()) {//投稿にサムネイルは無いが画像がある場合の処理
                   echo '<meta property="og:image" content="'.$imgurl[2].'">';echo "\n";
              } else {//投稿にサムネイルも画像も無い場合の処理
                   echo '<meta property="og:image" content="http://suliko.moo.jp/wp-content/themes/suliko/facebooksamune3.gif">';echo "\n";
              }
         } else {//単一記事ページページ以外の場合(アーカイブページやホームなど)
              echo '<meta property="og:image" content="http://suliko.moo.jp/wp-content/themes/suliko/facebooksamune3.gif">';echo "\n";
         }
    ?>
    <!-- Twitter Card -->
    <meta name="twitter:card" content="http://suliko.moo.jp/wp-content/themes/suliko/facebooksamune3.gif">
    <meta name="twitter:site" content="@suliko_omiyage" />
    <meta name="twitter:creator" content="@suliko_omiyage">
    <meta name="twitter:domain" content="suliko.moo.jp">
    </head>
    
    <body <?php body_class(); ?>><div id="fb-root"></div>
    <script>(function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1&appId=1481943102034411";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));</script>
    
    <!-- コンテナ -->
    
    <!-- ヘッダー -->
    <div id ="header">
    省略
    </div><!-- ←headerの終わり-->

    どうすれば、All in one SEO packで指定したタイトル(B)が、facebook上で出てきてくれるのでしょうか。

    私のホームページです。

    タイトルをわざわざ違う物にしたい理由は、タイトルAには下記のように<br>が含まれていて

    例:商品の簡単な説明<br><span>商品名</span>

    facebookで表示すると、「商品の簡単な説明」の部分しか表示されないからです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    <meta property="og:title" content="<?php echo $title ?>">

    <meta property="og:title" content="<?php wp_title(); ?>">

    で良さそうな気がします。

    テンプレートと出力されているHTMLのコードをよく見較べて、All in one SEO pack で設定したタイトルがどこに出ているか確認してみてください。

    jim912様

    ご回答ありがとうございます。返信が遅くなり、申し訳ございません。

    質問の仕方を間違えました。タイトルではなく、All in one SEO packを使った時にでてくるカスタムフィールドのタイトルを、表示させたかったんです。

    カスタムフィールドという言葉を知りませんでした。勉強不足ですみません。

    結局、自己解決できました!

    12行目の
    $title = get_the_title() . " - " . get_bloginfo('name');

    $title = get_post_meta($post->ID, _aioseop_title, true);

    にしました。

    その結果、facebookの投稿でURLを貼付けると、ちゃんとカスタムフィールドのタイトルが表示されるようになりました!

    お騒がせして申し訳ございません。ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「all in one SEO packを使い各記事に設定したタイトルが、facebookで表示されない」には新たに返信することはできません。