WordPressブログ記事用schema.org JSON-LDをPHPで書いてみた

WPブログ用schema_org JSON-LDの書き方


以前の記事「リッチスニペット施策schema.orgのmicrodataをWordPressサイトに 」では、schema.org の microdata でのWordPressのブログ記事をマークアップする方法を書きましたが、こちらは JSON-LD でのマークアップ方法です。

JSON-LDに関する情報や、記述方法に関する徹底的な解説については、以下のSuzuki kenichi さんの記事に優る記事は書けそうにないので(笑)、こちらをじっくりとご覧になってください。

【徹底解説】JSON-LDを使ったschema.orgの記述方法 | 海外SEO情報ブログ

※Suzukiさん、いつも貴重な情報をありがとうございます!!<(_ _)>

上の記事を踏まえて、ブログ記事についてJSON-LDで記述するとなると以下の様になると思います。

PHPでの読み込み後JSON-LD

必要なプロパティなどについては「リッチスニペット施策schema.orgのmicrodataをWordPressサイトに」のschema.orgの基本について書いたところがありますので、ご覧いただければ、と思います。

WordPressでは、これをPHPで記述しておけば、記事を書くだけで自動的に生成されるようにできる・・という事でPHPで記述をしてみました。

PHPでのJSON-LD記述

<script type="application/ld+json">{
  "@context": "http://schema.org",
  "@type": "BlogPosting",
  "headline": "<?php the_title(); ?>",
	<?php $str = $post->post_content;
$searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i';//投稿にイメージがあるか調べる
if (has_post_thumbnail() &amp;&amp; ! is_archive() &amp;&amp; ! is_front_page() &amp;&amp; ! is_home())
{//投稿にサムネイルがある場合の処理
     $image_id = get_post_thumbnail_id();
     $image = wp_get_attachment_image_src( $image_id, 'full');
     $scimage=$image[0];
} 
else if ( preg_match( $searchPattern, $str, $imgurl ) &amp;&amp;is_single()) 
{//投稿にサムネイルは無いが画像がある場合の処理
     $scimage=$imgurl[2];
} 
else 
{//投稿にサムネイルも画像も無い場合
     $scimage=get_bloginfo('url')."ここには代替画像URL:ロゴ画像URLなどのドメインから後ろのURLを入れてください";
}
?>
  "image": "<?php echo $scimage; ?>",
  "datePublished": "<?php echo get_the_date('c'); ?>",
  "dateModified": "<?php the_modified_date('c'); ?>",
<?php $excerpt =strip_tags(get_the_excerpt()); $excerpt = str_replace(array("... 記事を表示する"), '', $excerpt); ?>
  "description": "<?php echo $excerpt; ?>"
}
</script>

注釈:使用上の注意です。よく読んでご使用ください(^o^)

◆ 必須項目について

上の記述はほぼミニマムです。

必須でない部分は、 “dateModified~<?php echo $excerpt; ?>”です。

この部分は、不要なら削除してもOKです。

◆ image について

<?php $strからの部分はアイキャッチ画像を読み込む記述です。

これはimage用の設定で、ogp設定のアイキャッチ画像を取得するモノを流用しました^^;

imageは必須項目なので、万が一画像が無いとエラーが発生しますし、取得してくれるかどうかわからないので、保険としての代替画像を読み込む設定もそのまま使っています。

記事ページ上に無い画像を使ってスパムとみなされることは避けたいので、ロゴの画像や、自己紹介の為においてある顔写真など常にページ上にある画像を選んでください。

URLの入れ方は、画像URLが
example.com/wp-content/themes/2015/10/photo123.jpg
だったら、example.com以外の
/wp-content/themes/2015/10/photo123.jpg

ここには代替画像URL・・の部分に入れてください。

◆ description について

descriptionは、記事の抜粋を読み込むようにしてあります。

の記述は、

strip_tags(get_the_excerpt());

の部分で<p>タグを除去、

str_replace(array(“… 記事を表示する”), ”, $excerpt);

の部分で抜粋の後に表示される「more」「続きを読む」などを削除するものです。

ご自分の抜粋の後ろの表記に合わせて ”記事を表示する” の部分を変更してください。

貼り付ける場所はheader.php

自分仕様に編集ができたら、貼り付ける場所は、header.phpの</head>の直前がおすすめです。

HTMLページならどこに設置してもOKなのですが、WordPressの場合、本文中に置くとプログラムと認識され、肝心の<script type=”application/ld+json”>の部分が生成されるページ上から消失してしまいます。

これが無いとJSON-LDだと認識されず、読み取りもしてもらえません(経験談・笑)ので、ご注意ください。

デフォルトテーマ、Twenty Twelve、Twenty Thirteen、Twenty Fourteen、Twenty Fifteenの場合は、以下の画像のところになります。
管理画面の外観 → テーマの編集画面を開き、右側のファイル一覧からheader.phpをクリックしてください。

header_phpの貼り付け場所

Structured Data Testing Toolで確認

出来上がったら、Googleさん提供の、Structured Data Testing Tool:構造化データテストツールで設定がちゃんとできているかをテストします。

Structured Data Testing Toolで確認

はい、できているようですね(^^)

ではでは、今日はこの辺で。

「WordPressブログ記事用schema.org JSON-LDをPHPで書いてみた」の巻でした!

お役に立ったら、シェアなどしていただけるとうれしいです!

Published:2015/10/09

Written by

WordPressブログ記事用schema.org JSON-LDをPHPで書いてみた」への5件のフィードバック

コメントを残す