WordPressテーマSANGOの質問

メタディスクリプションについて

アバター
たけしゃん

お世話になっております。
色々自分なりに調べてみても、わからずアドバイスいただけると助かります。

全記事で記事の投稿画面からメタディスクリプションを設定しているのですが、なぜか入力内容と異なるディスクリプションが出力されてしまいます。

ソースコードを見ると、og:descriptionと記載の場所にはメタディスクリプション欄に入れた内容が表示されていますが、「@context”:”http://schema.org”,”@type”:”Article」の中のディスクリプションではよくわからない部分が切り取られて記載されており、Googleの検索結果や構造化データテストツールではそちらが反映されてしまいます。

自身のカスタマイズやプラグインで出力されているのかと思い、子テーマを止めてみたり、プラグインを止めてテストしたのですが、ソースコードを見ると変化はありませんでした。

他に思い当たるものがなく対処に困っており、相談させていただきました。

お手数おかけしますが、どうぞよろしくお願いします。

SANGO
SANGO 質問ガイドライン
コメントへの回答
サルワカくん
サルワカくん
2020/09/17

構造化データ(http://schema.org)のdescriptionはSEOとは直接的に関係ないので特に心配される必要はありません。
とはいえ、念のため次のテーマアップデートで「構造化データのdescriptionにカスタムフィールドで入力したデスクリプションを表示する」ように修正しようと思います。
すぐに対応したい場合は下記のコードを子テーマのfunctions.phpに貼り付ければ良いかと思います。

  function insert_json_ld() {
    $src_info = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
    if ($src_info) {
      $src = $src_info[0];
      $width = $src_info[1];
      $height = $src_info[2];
    } else { // アイキャッチ画像が無い場合はデフォルトの登録画像
      $src = featured_image_src('thumb-520');
      $width = '520';
      $height = '300';
    }
    $page_url = get_the_permalink();
    $headline = esc_attr(get_the_title());
    $date_published = get_the_date(DATE_ISO8601);
    $date_modified = (get_the_date() != get_the_modified_time()) ? get_the_modified_date(DATE_ISO8601) : get_the_date(DATE_ISO8601);
    $author_name = get_the_author_meta('display_name');
    $publisher_name = esc_attr(get_option('publisher_name'));
    $publisher_logo_url = esc_url(get_option('publisher_img'));
    $custom_description = get_post_meta(get_the_ID(), 'sng_meta_description', true);
    $description = $custom_description ? esc_attr($custom_description) : esc_attr(get_the_excerpt());

    $json = <<< EOM
    {
      "@context": "http://schema.org",
      "@type": "Article",
      "mainEntityOfPage":"{$page_url}",
      "headline": "{$headline}",
      "image": {
        "@type": "ImageObject",
        "url": "{$src}",
        "width": {$width},
        "height": {$height}
      },
      "datePublished": "{$date_published}",
      "dateModified": "{$date_modified}",
      "author": {
        "@type": "Person",
        "name": "{$author_name}"
      },
      "publisher": {
        "@type": "Organization",
        "name": "{$publisher_name}",
        "logo": {
          "@type": "ImageObject",
          "url": "{$publisher_logo_url}"
        }
      },
      "description": "{$description}"
    }
EOM;
    echo '<script type="application/ld+json">' . sng_minify_js($json) . '</script>';
  }

↑ 注意点としてはEOM;の左にはスペース等が入らないようにしてください(行のぴったり先頭に配置されるようにしてください)

よろしくお願いします。