特定の記事に対してJSON-LDを使って構造化データを記述する方法【Cocoon】

特定の記事に対してJSON-LDで構造化データマークアップする方法(WordpressテーマCocoon)
WordPressテーマ「Cocoon」を利用している方向けの記事です。

WPテーマをCocoonに変えたついでに、映画関連の特定記事に対して構造化データマークアップを追加してみようとテキストエディタに直接書き込んでみたところ…。

数日間はうまいこと反映されていたんです。が、バージョンアップなどの影響で反映されなくなり困っていました。

この状態↑になりどうしたらいいかわからず、しばらく放置していたのですが…

「カスタムJavaScript」ではなく「カスタムフィールド」を使うことで解決したので備忘録として残しておきます。

記事毎にJSON-LDで構造化データマークアップしたい

私がやりたかったことは投稿毎、特定の記事にタイプ別(Movie等)構造化データマークアップを追加すること。

とりあえず「カスタムJavaScript」にJSON-LDマークアップを追加したのですが結果は失敗、反映されませんでした。

なんで反映されないのか考えてみたんですが、Cocoonの仕様でScriptタグの入力不要(自動で差し込んでくれる)になっているのが影響しているのかなと。

//JSON-LDマークアップ用にtypeを指定する必要があるが
<script type="application/ld+json">~~~~</script>
//実際は↓で処理されJSON-LDマークアップとして認識されない
<script>~~~~</script>

困ったらまずCocoon公式フォーラムを確認

まずは過去の質問を漁るところからスタート。検索してみると、公式フォーラムの質問に似たようなことが質問している方がいました。

参考:https://wp-cocoon.com/community/cocoon-theme/特定固定ページでのみで使用するjsの記載方法につ/

特定の固定ページでjsを追加する方法について回答があり、<head>内にコードを挿入する方法が紹介されていました。

これを流用すれば特定の投稿にJSON-LDマークアップを追加できると思い試してみることに。

【手順】カスタムフィールドでJSON-LDを追加

今回は「映画「エスター」感想。主演子役の怪演がやばい! ラストまで見逃せないサスペンスホラー!!」映画レビュー記事にMovieのマークアップを追加します。

1. JSON-LDコードスぺニットを追加したい記事の編集画面で「表示オプション」をクリック
WPテーマCocoonでカスタムフィールドを表示させる方法

 

▼2. 「カスタムフィールド」にチェックを入れるWPテーマCocoon、表示オプションからカスタムフィールドを選択してチェックを入れる

 

▼3. 記事本文枠の下に「カスタムフィールド」が表示される本文入力フォームのしたにカスタムフィールドが表示された

 

▼4. さらに下を見ると「カスタムフィールドを追加」という枠があるので「新規追加」をクリック下の方に「カスタムフィールドを追加」がある

 

▼5. 名前に「head_custom」、値に「(反映させたいコードスぺニット)」を入力し「カスタムフィールドを追加」をクリックhaed_customを作成し追加したいソースコードを入力する

 

▼6. カスタムフィールドに「head_custom」が追加されたことを確認カスタムフィールドに「head_custom」が追加された

 

▼7. Googleのツールを利用し正常な「JSON-LDマークアップ」コードを作成・コピー映画レビューJSON-LD参考例

※カスタムフィールド「head_custom」を作成する時点で値にコードスぺニットを入力しても構いません。

 

▼8. 先ほど追加したhead_customの値にコピーした「JSON-LDマークアップ」コードを貼り付け、記事を更新する先ほど追加したhead_customの値にコードスぺニットを貼り付ける

 

▼9. テストツールでチェック。タイプ「Movie」構造化データが正常に反映されたタイプ「Movie」構造化データが正常に反映された

比較:カスタムフィールド追加前はMovieは検出されていません
比較用画像カスタムフィールド追加前

JSON-LDを使って構造化データを追加することができました。

まとめ

というわけで、WPテーマ「Cocoon」で特定の記事にJSON-LDを使って構造化データを追加するには、

カスタムフィールドに「head_custom」を作成し、値に作成したJSON-LDマークアップを入力すればOKでした。