WordPressでJSON-LD形式の構造化データを出力する
2024年8月9日
WordPress で、schema.org の構造化データを JSON-LD 形式(JSON for Linking Data)で出力する方法、の自分用メモです。
構造化データは、WordPress のプラグイン検索画面で「schema」と検索すると出てくるプラグインで簡単に出力することが可能です。
また、「All in One SEO Pack」の Schema.org マークアップ機能をONしても出力できるのですが、なんとなーく構造化データは自前でコントロールしたい、ということで、function.php から自前で出力することにしました。
ソースはこんな感じ。
function insert_json_ld (){ global $post; $post_data = $post; $category = get_the_category(); $payload["@context"] = "http://schema.org/"; // JSON-LD for every signle article page. if (is_single()) { $author_data = get_userdata($post_data->post_author); $post_url = get_permalink(); $post_thumb = wp_get_attachment_url(get_post_thumbnail_id($post->ID)); $payload["@type"] = "Article"; $payload["url"] = $post_url; $payload["author"] = array( "@type" => "Person", "name" => $author_data->display_name, ); $payload["headline"] = $post_data->post_title; $payload["datePublished"] = $post_data->post_date; $payload["image"] = $post_thumb; $payload["ArticleSection"] = $category[0]->cat_name; $payload["Publisher"] = "TeraDas"; } // JSON-LD for front page. if ( is_front_page() ) { $payload["@type"] = "Organization"; $payload["name"] = "TeraDas"; $payload["logo"] = "http://www.example.com/Logo.png"; $payload["url"] = "http://www.example.com/"; $payload["sameAs"] = array( "https://twitter.com/teradas", "https://www.facebook.com/TeraDas.net" ); $payload["contactPoint"] = array( array( "@type" => "ContactPoint", "telephone" => "+81 00 0000 0000", "email" => "sales@example.com", "contactType" => "sales" ) ); } // JSON-LD for author pages. if ( is_author() ) { $author_data = get_userdata($post_data->post_author); $twitter_url = get_the_author_meta('twitter'); $website_url = get_the_author_meta('url'); $facebook_url = get_the_author_meta('facebook'); $payload["@type"] = "Person"; $payload["name"] = $author_data->display_name; // $payload["email"] = $author_data->user_email; $payload["sameAs"] = array( $twitter_url, $website_url, $facebook_url, $gplus_url ); } echo '<script type="application/ld+json">'.json_encode($payload).'</script>'; } add_action('wp_footer','insert_json_ld');
single、front_page、author それぞれについて異なる構造化データを出力します。
フィルタでフッタに JSON-LD 形式で構造化データを挿入しています。
各項目については、各自の環境にあわせて精査したほうがよいでしょう。
最後に Google の 構造化データテストツール での確認もお忘れなく。
こんな記事も読んでみませんか?
- JSON-LDでschema.org v2.0対応の構造化データを出力する(パンくずリスト・AMP)
- 【WordPress】自動でリビジョン削除とデータベースを最適化できるプラグイン「Optimize Database after Deleting Revisions」
- HTMLがMinifyされる環境で改行文字を強制出力する(インライン要素の折り返し)
- 【GA4 API】dateHourフィルターで概ね24時間以上前のデータしか取れなくなってる話
- 非同期処理をWordPressのwp_cronを使って投げるように改修した
- nginx+W3 Total Cache+gzipでのVaryヘッダー嵌りどころメモ【WordPress・Brotli】