【解決済】”項目itemListElementがありません”問題の解決法
2021/05/24


Pexels / Pixabay
久々にGoogle Search ConsoleでサイトをURL検査を行ったところ、項目「itemListElement」がありませんというエラーが表示されました。
ググってみると苦労している方が多いもよう。こちらはすぐに解決しましたので、解決法を記録しておきます。
どうもこれはパンくずリストの内容に問題があるようで、data-vocabulary.orgではなくschema.orgでパンくずリストを作成しなければならないという仕様変更によるもののようです。
私はXserverを使用していることと、WordpressのStinger5-Cheetah-Childというマイナーなテーマを使用していますので、phpの中身を変更する必要がありました。Xserverではない、あるいは別のテーマであってもやることはだいたい同様ですので、ご自身の環境に合わせて修正しましょう。
まずXserverの契約管理ページからファイル管理を選択してファイルマネージャを開くと、このような画面になります。
画像のとおり、サイトアドレス → public_html → wp-content → themes とたどり、現在使用しているテーマの階層まで開きます。テーマによって修正するphpは違うと思いますが、私の場合は single.php を修正することで解決しました。環境によっては別のphpかもしれませんが、いずれにしてもパンくずリストに関するコードを突き止める必要があります。
single.phpを選択した状態で上部メニューから編集をクリックするとsingle.phpの内容が開きます。私の使用しているテーマでは、パンくずリストに関する部分がコメントアウトでわかりやすく区切られていましたので、その部分を全て削除したあと、次のコードをコピペしました。
<?php if (is_single()) { $cat = get_the_category(); if($cat && !is_wp_error($cat)){ $par = get_category($cat[0]->parent); echo '<div id="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">'; echo '<div itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><a href="'.get_bloginfo('url').'" itemprop="item"><span itemprop="name">ホーム</span></a><span class="sp">></span><meta itemprop="position" content="1" /></div>'; while($par && !is_wp_error($par) && $par->term_id != 0){ $echo = '<div itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><a href="'.get_category_link($par->term_id).'" itemprop="item"><span itemprop="name">'.$par->name.'</span></a><span class="sp">></span><meta itemprop="position" content="2" /></div>'.$echo; $par = get_category($par->parent); } echo $echo.'<div itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"><a href="'.get_category_link($cat[0]->term_id).'" itemprop="item"><span itemprop="name">'.$cat[0]->name.'</span></a><meta itemprop="position" content="3" /></div>'; echo '</div><!-- /#breadcrumb -->'; } } ?>
書き換えが終わったら更新を押してフィニッシュです。これでこの問題は解決しました。