WordPressテーマ Arkhe にプラグイン Arkhe Toolkit を追加すると、構造化データ(JSON-LD)を出力するようになる。
ただ、なぜか、トップページの構造化データに、name のプロパティが出力されていない。
Google 検索検索セントラルの資料を読むと、必須プロパティは、name と url とある。
資料で指示されているサンプルコードがこちら
<script type="application/ld+json">
{
"@context" : "https://schema.org",
"@type" : "WebSite",
"name" : "Example",
"url" : "https://example.com/"
}
</script>
SEO系プラグインを使う?
All in one SEOやYoast SEOを使えば解決しそうなのだが、Arkheには、SEO SIMPLE PACKを合わせて使いたい。ということで、functions.phpからカスタマイズを行なった。
トップページでは構造化データを出力しない
以下のコードをfunctions.phpに追加すると、トップページではArkhe Toolkitの構造化データの出力を停止できる。
function remove_action_json_ld_dat_for_front_page() {
if ( is_front_page() ) {
remove_action( 'wp_footer', '\Arkhe_Toolkit\output_json_ld', 20 );
}
}
add_action( 'wp', 'remove_action_json_ld_dat_for_front_page' );
トップページの構造化データを生成するコード
トップページの構造化データは、下のコードで出力する。functions.phpに追加するとOKだ。
add_action('wp_footer',function(){
if (is_home() || is_front_page()){
// トップページ
$home_url = home_url( '/' );
$name_blog = get_bloginfo("name");
$json_lds['WebSite'] = '{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "' . $name_blog . '",
"url": "' . esc_url( $home_url ) . '",
"potentialAction": {
"@type": "SearchAction",
"target": "' . esc_html( $home_url ) . '?s={s}",
"query-input": "name=s required"
}
}';
echo PHP_EOL . '<!-- JSON-LD @ TOP PAGE -->' . PHP_EOL;
echo '<script type="application/ld+json">[' . implode( ',', $json_lds ) . ']</script>'; // phpcs:ignore WordPress.Security
echo PHP_EOL . '<!-- / JSON-LD @ TOP PAGE -->' . PHP_EOL;
}
},30);
これら2つのコードを使うと、トップページの構造化データに、name のプロパティが出力できる。
karuku.amid.co.jpのコード
karuku.amid.co.jp は静的化しているため、検索のパートを削除し、下のようなコードを追加した。
これで、検索結果に反映されるか、時間を置いて確認する。
/* 構造化データ TOP PAGE カスタマイズ */
/* 【ON】JSON-LDを自動生成する */
/* 【ON】パンくずリストの構造をJSON-LDに含める */
/* 優先度 30 */
/* トップページのときは、Arkhe Toolkit */
/* 構造化データ JSON-LD フックを remove */
/* 停止する */
function remove_action_json_ld_dat_for_front_page() {
if ( is_front_page() ) {
remove_action( 'wp_footer', '\Arkhe_Toolkit\output_json_ld', 20 );
}
}
add_action( 'wp', 'remove_action_json_ld_dat_for_front_page' );
add_action('wp_footer',function(){
if (is_home() || is_front_page()){
// トップページ
$home_url = home_url( '/' );
$name_blog = get_bloginfo("name");
$json_lds['WebSite'] = '{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "' . $name_blog . '",
"alternateName": ["軽く生きるヒント", "かるいき", "かるく生きるヒント"],
"url": "' . esc_url( $home_url ) . '"
}';
echo PHP_EOL . '<!-- JSON-LD @ TOP PAGE functions.php -->' . PHP_EOL;
echo '<script type="application/ld+json">[' . implode( ',', $json_lds ) . ']</script>'; // phpcs:ignore WordPress.Security
echo PHP_EOL . '<!-- / JSON-LD @ TOP PAGE functions.php -->' . PHP_EOL;
}
},30);
/* end 構造化データ カスタマイズ */