LION MEDIAバージョン: 2.0.0でdata-vocabulary.org スキーマをschema.orgスキーマに変更する

LION MEDIAバージョン: 2.0.0でdata-vocabulary.org スキーマをschema.orgスキーマに変更する

Google Search Consoleで、パンくずリストの警告が発生しました。

「data-vocabulary.org スキーマのサポートは終了します」

この警告は、どうやらGoogleが2020年4月6日以降、data-vocabulary.org を検索結果のリッチリザルトの対象外とすることを決定したことにより表示されるようになったようです。(今の今まで気づいていませんでした)

この警告を消すには、data-vocabulary.org から schema.org でのパンくずリストに変更する必要があるようです。

僕のブログは、LION MEDIAバージョン: 2.0.0を使用しています。
※最新版では治っているかもしれませんので、既存のバージョンを使っている人だけこれから書く内容を参考にできるはずです。


function.phpを修正

wp-content/themes/lionmedia/functions.phpを変更します。
変更箇所は大分多いので気合い入れていきましょう。
変更箇所は以下の差分になります。(行数は若干違うかもしれないのでお手元の環境と照らし合わせてください。

5407,5413c5407,5414
<               if( !is_home() && !is_admin() ){
<                       $str.= '<div class="'. $class .'" >';
<                       $str.= '<div class="container" >';
<                       $str.= '<ul class="breadcrumb__list">';
<                       $str.= '<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. home_url() .'/" itemprop="url"><span class="icon-home" itemprop="title">'. $home .'</span></a></li>';
<                       $my_taxonomy = get_query_var( 'taxonomy' );
<                       $cpt = get_query_var( 'post_type' );
---
>       if( !is_home() && !is_admin() ){
>               $count = 1;
>               $str.= '<div class="'. $class .'" >';
>               $str.= '<div class="container" >';
>               $str.= '<ol itemscope itemtype="http://schema.org/BreadcrumbList">';
>               $str.= '<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. home_url() .'/" itemprop="item"><span class="icon-home" itemprop="name">'. $home .'</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>               $my_taxonomy = get_query_var( 'taxonomy' );
>               $cpt = get_query_var( 'post_type' );
5419,5422c5420,5422
<                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="' .get_post_type_archive_link( $cpt ).'" itemprop="url"><span itemprop="title">'. get_post_type_object( $cpt )->label.'</span></a></li>';
< 
<               if( $my_tax -> parent != 0 ) {
<                       $ancestors = array_reverse( get_ancestors( $my_tax -> term_id, $my_tax->taxonomy ) );
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="' .get_post_type_archive_link( $cpt ).'" itemprop="item"><span itemprop="name">'. get_post_type_object( $cpt )->label.'</span></a></li>';
>                       if( $my_tax -> parent != 0 ) {
>                               $ancestors = array_reverse( get_ancestors( $my_tax -> term_id, $my_tax->taxonomy ) );
5424,5425c5424,5426
<                       foreach( $ancestors as $ancestor ){
<                               $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_term_link( $ancestor, $my_tax->taxonomy ) .'" itemprop="url"><span itemprop="title">'. get_term( $ancestor, $my_tax->taxonomy )->name .'</span></a></li>';
---
>                               foreach( $ancestors as $ancestor ){
>                                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_term_link( $ancestor, $my_tax->taxonomy ) .'" itemprop="item"><span itemprop="name">'. get_term( $ancestor, $my_tax->taxonomy )->name .'</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               }
5427,5431c5428,5429
<               }
<                       $str.='<li class="breadcrumb__item">'. $my_tax -> name . '</li>';
<               }
< 
<               elseif( is_category() ) {
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $my_tax -> name . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif ( is_category() ) {
5436c5434
<                                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_category_link( $ancestor ) .'" itemprop="url"><span itemprop="title">'. get_cat_name( $ancestor ) .'</span></a></li>';
---
>                                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_category_link( $ancestor ) .'" itemprop="item"><span itemprop="name">'. get_cat_name( $ancestor ) .'</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
5439,5442c5437,5438
<                       $str.='<li class="breadcrumb__item">'. $cat -> name . '</li>';
<               }
< 
<               elseif( is_post_type_archive() ) {
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $cat -> name . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif ( is_post_type_archive() ) {
5444,5447c5440,5441
<                       $str.='<li class="breadcrumb__item">'. get_post_type_object( $cpt )->label . '</li>';
<               }
< 
<               elseif( $cpt && is_singular( $cpt ) ){
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. get_post_type_object( $cpt )->label . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( $cpt && is_singular( $cpt ) ){
5450c5444
<                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="' .get_post_type_archive_link( $cpt ).'" itemprop="url"><span itemprop="title">'. get_post_type_object( $cpt )->label.'</span></a></li>';
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="' .get_post_type_archive_link( $cpt ).'" itemprop="item"><span itemprop="name">'. get_post_type_object( $cpt )->label.'</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
5454,5457c5448,5452
<               if( $tax -> parent != 0 ){
<                       $ancestors = array_reverse( get_ancestors( $tax -> term_id, $mytax ) );
<                       foreach( $ancestors as $ancestor ){
<                               $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_term_link( $ancestor, $mytax ).'" itemprop="url"><span itemprop="title">'. get_term( $ancestor, $mytax )->name . '</span></a></li>';
---
>                       if( $tax -> parent != 0 ){
>                               $ancestors = array_reverse( get_ancestors( $tax -> term_id, $mytax ) );
>                               foreach( $ancestors as $ancestor ){
>                                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_term_link( $ancestor, $mytax ).'" itemprop="item"><span itemprop="name">'. get_term( $ancestor, $mytax )->name . '</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               }
5459,5464c5454,5456
<               }
<                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_term_link( $tax, $mytax ).'" itemprop="url"><span itemprop="title">'. $tax -> name . '</span></a></li>';
<                       $str.= '<li class="breadcrumb__item">'. $post -> post_title .'</li>';
<               }
< 
<               elseif( is_single() ){
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_term_link( $tax, $mytax ).'" itemprop="item"><span itemprop="name">'. $tax -> name . '</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $post -> post_title . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_single() ){
5469,5470c5461,5463
<                       foreach( $ancestors as $ancestor ){
<                               $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_category_link( $ancestor ).'" itemprop="url"><span itemprop="title">'. get_cat_name( $ancestor ). '</span></a></li>';
---
>                               foreach( $ancestors as $ancestor ){
>                                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_category_link( $ancestor ).'" itemprop="item"><span itemprop="name">'. get_cat_name( $ancestor ). '</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               }
5472,5477c5465,5467
<               }
<                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_category_link( $cat -> term_id ). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a></li>';
<                       $str.= '<li class="breadcrumb__item">'. $post -> post_title .'</li>';
<         }
< 
<               elseif( is_page() ){
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_category_link( $cat -> term_id ). '" itemprop="item"><span itemprop="name">'. $cat-> cat_name . '</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $post -> post_title . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>         } elseif( is_page() ){
5481c5471
<                                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_permalink( $ancestor ).'" itemprop="url"><span itemprop="title">'. get_the_title( $ancestor ) .'</span></a></li>';
---
>                                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_permalink( $ancestor ).'" itemprop="item"><span itemprop="name">'. get_the_title( $ancestor ) .'</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
5484,5487c5474,5475
<                       $str.= '<li class="breadcrumb__item">'. $post -> post_title .'</li>';
<               }
< 
<               elseif( is_date() ){
---
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $post -> post_title . '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_date() ){
5489,5531c5477,5503
<                               $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_year_link(get_query_var('year')). '" itemprop="url"><span itemprop="title">' . get_query_var( 'year' ). '年</span></a></li>';
<                               $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_month_link(get_query_var( 'year' ), get_query_var( 'monthnum' ) ). '" itemprop="url"><span itemprop="title">'. get_query_var( 'monthnum' ) .'月</span></a></li>';
<                               $str.='<li class="breadcrumb__item">'. get_query_var('day'). '日</li>';
<               }
< 
<               elseif( get_query_var('monthnum' ) != 0){
<                       $str.='<li class="breadcrumb__item" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="'. get_year_link( get_query_var('year') ) .'" itemprop="url"><span itemprop="title">'. get_query_var( 'year' ) .'年</span></a></li>';
<                       $str.='<li class="breadcrumb__item">'. get_query_var( 'monthnum' ). '月</li>';
<               }
< 
<               else {
<                       $str.='<li class="breadcrumb__item">'. get_query_var( 'year' ) .'年</li>';
<               }
<               }
< 
<               elseif( is_search() ) {
<                       $str.='<li class="breadcrumb__item">「'. get_search_query() .'」'. $search .'</li>';
<               }
< 
<               elseif( is_author() ){
<                       $str .='<li class="breadcrumb__item">'. $author . get_the_author_meta('display_name', get_query_var( 'author' )).'</li>';
<               }
< 
<               elseif( is_tag() ){
<                       $str.='<li class="breadcrumb__item">'. $tag . single_tag_title( '' , false ). '</li>';
<               }
< 
<               elseif( is_attachment() ){
<                       $str.= '<li class="breadcrumb__item">'. $post -> post_title .'</li>';
<               }
< 
<               elseif( is_404() ){
<                       $str.='<li class="breadcrumb__item">'.$notfound.'</li>';
<               }
< 
<               else{
<                       $str.='<li class="breadcrumb__item">'. wp_title( '', true ) .'</li>';
<               }
< 
<                       $str.='</ul>';
<                       $str.='</div>';
<                       $str.='</div>';
<               }
---
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_year_link(get_query_var('year')). '" itemprop="item"><span itemprop="name">' . get_query_var( 'year' ). '年</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_month_link(get_query_var( 'year' ), get_query_var( 'monthnum' ) ). '" itemprop="item"><span itemprop="name">'. get_query_var( 'monthnum' ) .'月</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. get_query_var('day') . '日</span><meta itemprop="position" content="'.$count++.'" /></li>';
>                       } elseif( get_query_var('monthnum' ) != 0){
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="'. get_year_link( get_query_var('year') ) .'" itemprop="item"><span itemprop="name">'. get_query_var( 'year' ) .'年</span></a><meta itemprop="position" content="'.$count++.'" /></li>';
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. get_query_var('monthnum') . '月</span><meta itemprop="position" content="'.$count++.'" /></li>';
>                       } else {
>                               $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. get_query_var('year' ) .'年</span><meta itemprop="position" content="'.$count++.'" /></li>';
>                       }
>               } elseif( is_search() ) {
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'.'「'. get_search_query() .'」'. $search .'</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_author() ){
>                       $str .='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $author . get_the_author_meta('display_name', get_query_var( 'author' )).'</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_tag() ){
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $tag . single_tag_title( '' , false ). '</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_attachment() ){
>                       $str.= '<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. $post -> post_title .'</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } elseif( is_404() ){
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'.$notfound.'</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               } else{
>                       $str.='<li class="breadcrumb__item" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">'. wp_title( '', true ) .'</span><meta itemprop="position" content="'.$count++.'" /></li>';
>               }
> 
>               $str.='</ol>';
>               $str.='</div>';
>               $str.='</div>';
>       }

修正箇所の説明

schema.orgでは以下のような形式にする必要があります。

<ol itemscope itemtype="http://schema.org/BreadcrumbList">
  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <a itemprop="item" href="https://kmmr.jp">
      <span itemprop="name">HOME</span>
    </a>
    <meta itemprop="position" content="1" />  
  </li>
  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <span itemprop="name">記事タイトル</span>
    <meta itemprop="position" content="2" />
  </li>
</ol>

上記を踏まえて、どのように修正していくかというと、

data-vocabulary.orgのパンくずリスト<ul>は<ol itemscope itemtype=”http://schema.org/BreadcrumbList”>に変更します。

<li>は、itempropが定義されているところ、いないところとありますが、すべて以下の形式に置き換えます。<li class=”breadcrumb__item” itemprop=”itemListElement” itemscope itemtype=”http://schema.org/ListItem”>

<a>は、itemprop=”url”をitemprop=”item”に変更

<span>は、itemprop=”title”をitemprop=”name”に変更

<li>内に<meta>を追加し、contentに順番を追加する必要があります。
一番最初に$countを定義し、1つパンくずリストを追加するたびインクリメントしていきます。

という作業をひたすら続けます。