WordPressテーマTCD「UNIQUE」(tcd044)でパンくずリストの警告「data-vocabulary.org schema deprecated」に対応する

【PR】本ページはプロモーションが含まれています

1月22日〜23日にGoogle Search Consoleから「パンくずリストhttps://www.○○○○.com/で問題が検出されました」というメールが届きました。

当サイトのドメイン以外にも私が管理するその他のWordpressサイトから同じメールが届いたので、Googleの仕様変更だろうと予測出来ました。

このような仕様変更の対応スピードでテーマの善し悪しが分かります。

スポンサーリンク

パンくずの構造化データ表記が古い

2020年4月6日以降、data-vocabulary.orgをリッチリザルト検索結果の対象外とすることが、Googleから発表されました。

パンくずリストの警告は比較的古いWordpressテーマを使っていた場合に起こるというわけです。

当方の管理しているWordPressテーマでも複数のサイトが警告されています。
WordPressテーマTCD「UNIQUE」やisotypeの「MYSTIC BLUE」、「Simplicity2」が警告対象でした。

このブログテーマ「WING(AFFINGER5)」や「LIQUID PRESS」は警告されていません。
新しいschema.orgを既に使っていたからです。

「Simplicity2」については、その日のうちに対応バージョン2.8.5が公開されました。

スポンサーリンク

WordPressテーマTCD「UNIQUE」のパンくずをdata-vocabulary.orgからschema.orgに変更する

仕様変更ですので、リミットの4月までには全てのテーマで対応版が出てくると予想されます。

しかし、「Simplicity2」の対応の速さを見てしまうと、弊社の公式サイトで使用しているWordPressテーマTCD「UNIQUE」の対応速度が不安になりました。

そこで、自分で修正することに。

修正に当たっては以下のサイトを参考にさせて頂きました。

参照 data-vocabulary.org schema deprecated の警告が出た!パンくずリストの構造化データを修正しましょう(marie-web.design)

しかし、パンくずの正しい使用としては現在表示中のURLも表記する必要があるはずです。

参照 パンくずリストを構造化データでリッチスニペット対応する方法(webliker.info)

それも考慮して修正します。

breadcrumb.phpの修正

WordPressテーマTCD「UNIQUE」の修正箇所は「breadcrumb.php」です。

これを以下のように修正します。

<?php $options = get_desing_plus_option();  
$pcount = 0;
$http = is_ssl() ? 'https://' : 'http://';
$url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
?>
<div id="bread_crumb">
<ul itemscope itemtype="http://schema.org/BreadcrumbList" class="clearfix">
	<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="home" ><a itemprop="item" href="<?php echo esc_url(home_url('/')); ?>"><span itemprop="name"><?php _e('Home', 'tcd-w'); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     if(is_post_type_archive('work') || is_tax('work-cat')) {
       $archive_name = $options['work_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     } elseif(is_post_type_archive('news')) {
       $archive_name = $options['news_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     } elseif (is_category()) {
       $archive_name = $options['blog_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="<?php echo esc_url(get_permalink( get_option('page_for_posts') )); ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <?php $cat = get_queried_object(); ?>
 <?php if($cat -> parent != 0): ?>
 <?php $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' )); ?>
 <?php foreach($ancestors as $ancestor): ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="<?php echo get_category_link($ancestor); ?>"><span itemprop="name"><?php echo get_cat_name($ancestor); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <?php endforeach; ?>
 <?php endif; ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo $cat -> cat_name; ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_tag()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo single_tag_title('', false); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_day()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html(get_the_time(__('F jS, Y', 'tcd-w'))); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_month()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html(get_the_time(__('F, Y', 'tcd-w'))); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_year()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html(get_the_time(__('Y', 'tcd-w'))); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     } elseif(is_author()) {
       global $wp_query;
       $curauth = $wp_query->get_queried_object(); //get the author info
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html($curauth->display_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
      } elseif(is_home()) {
        $archive_name = $options['blog_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_search()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php _e("Search Result","tcd-w"); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_404()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php _e("Sorry, but you are looking for something that isn't here.","tcd-w"); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     } elseif(is_singular('work')) {
       $archive_name = $options['work_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="<?php echo esc_url(get_post_type_archive_link('work')); ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php trim_title(28); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
     } elseif(is_singular('news')) {
       $archive_name = $options['news_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="<?php echo esc_url(get_post_type_archive_link('news')); ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php trim_title(28); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php
      } elseif(is_single()) {
       $archive_name = $options['blog_breadcrumb'];
?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="<?php echo esc_url(get_permalink( get_option('page_for_posts') )); ?>"><span itemprop="name"><?php echo esc_html($archive_name); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
  <?php
    $categories=get_the_category();
    $count=1;
    foreach ($categories as $category) {
  ?>
  <a itemprop="item" href="<?php echo get_category_link($category->term_id) ?>"><span itemprop="title"><?php echo $category->name ?></span><?php if($count!=count($categories)) echo ',' ?></a>
  <?php $count++; ?>
  <?php } ?>
 <meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php trim_title(28); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php } elseif(is_page()) { ?>
 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="last"><a itemprop="item" href="<?php echo $url; ?>"><span itemprop="name"><?php the_title(); ?></span></a><meta itemprop="position" content="<?php echo $pcount += 1; ?>"></li>

<?php }; ?>
</ul>
</div>

簡単に解説すると「breadcrumb.php」の修正は以下のステップです。

  • <ul class=”clearfix”>を<ul itemscope itemtype=”http://schema.org/BreadcrumbList” class=”clearfix”>に変更
  • <li itemscope=”itemscope” itemtype=”http://data-vocabulary.org/Breadcrumb”>を<li itemprop=”itemListElement” itemscope itemtype=”http://schema.org/ListItem”>に変更
  • URLに itemprop=”item”を追加
  • ページ名称を<span itemprop=”name”>でくくる
  • ページ階層を示す<meta itemprop=”position>を追加
  • 現ページのURLを追加

<meta itemprop=”position” content=”<?php echo $pcount += 1; ?>”>がパンくずの階層を表します。
$pcountを一つずつカウントアップし、HOMEから表示ページまでのitemprop=”position”を決定します。

class=”last”を指定してあるところが現在のページですので、<a itemprop=”item” href=”<?php echo $url; ?>”>を追加しています。

現在のページのパンくずはリンクアクションを起こしたくないので、CSSに以下を追加します。

#bread_crumb li.last a {
	pointer-events: none;
}

修正後にリッチリザルトテストを行ってみました。

参照 リッチリザルト テスト(search.google.com)

リッチリザルトと判定されましたので、問題なさそうです。
その後、Google Search Consoleの警告も消えました。

かなり面倒くさい修正でしたね。

やっぱり、アップデートを待った方が良かったかも。

by T.Y.

スポンサーリンク