web-dev-qa-db-ja.com

WordPressにJSON構造化データを追加する

Googleの推奨事項 に従って、構造化データを追加したいと思います。彼らのサイトの指示に従って、それは言います:

マークアップは、HTMLページの先頭にあるスクリプトタグの内側に配置されます。マークアップは、イベントのMusicVenueのPostalAddressのCountryなど、ネストされたデータ項目の表現を容易にする、ユーザーに見えるテキストとインターリーブする必要はありません。また、Googleは、JSON-LDデータが、JavaScriptコードやコンテンツ管理システムの埋め込みウィジェットなどによってページのコンテンツに動的に挿入されたときに読み取ることができます。

HTMLページの先頭にあるscriptタグの内側に追加する必要があると言っていますが、header.php(fucntions.phpに含まれる)に含まれるJSONファイルを介して追加することも可能かどうかと思いました。可能であれば、ブレッドスクラムSDもどのように追加しますか。

上記があまりにも面倒な場合、または正しい方法ではない場合、構造化されたデータをWordPressサイトに追加するための最も推奨される方法はプラグインを必要としません。

1
Edgar Quintero

自分でテーマを作成している場合は、テーマ自体でいつでもSchema Microataマークアップを直接使用できます。

以下の例でわかるように、HTMLに追加の属性を追加すると、スキーマに準拠するようになります。この例では、itemscopeitemtype、およびitempropを使用しています。

HTTP://SCHEMA.ORG/DOCS/GS.HTML#MICRODATA_HOW からの取得

<div itemscope itemtype ="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <div itemprop="director" itemscope itemtype="http://schema.org/Person">
  Director: <span itemprop="name">James Cameron</span> (born <span itemprop="birthDate">August 16, 1954</span>)
  </div>
  <span itemprop="genre">Science fiction</span>
  <a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer">Trailer</a>
</div>

ただし、JSON-LDマークアップを使用したい場合は、 PHP JSON-LDライブラリ を使用してJSON-LDを生成し、添付してヘッダーにコードを挿入することを検討します。 wp_head関数に渡します。

PHP-JSON-LD GitHubの例からまとめて

<?php

// Describe your Thing to be marked up as an array
$doc = (object) array(
    "http://schema.org/name" => "Manu Sporny",
    "http://schema.org/url" => (object) array("@id" => "http://manu.sporny.org/"),
    "http://schema.org/image" => (object) array("@id" => "http://manu.sporny.org/images/manu.png")
);

// Describe it's schema context as well
$context = (object)array(
  "name" => "http://schema.org/name",
  "homepage" => (object)array("@id" => "http://schema.org/url", "@type" => "@id"),
  "image" => (object)array("@id" => "http://schema.org/image", "@type" => "@id")
);

function wp_json_ld($doc, $context) {
    require_once('/path/to/library');

    // Pass it through this magical function
    $compacted = jsonld_compact($doc, $context);

    echo '<script type="application/ld+json">';
    echo json_encode($compacted, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
    echo '</script>';
}

/* Output:
<script type="application/ld+json">
{
  "@context": {...},
  "image": "http://manu.sporny.org/images/manu.png",
  "homepage": "http://manu.sporny.org/",
  "name": "Manu Sporny"
}
</script>
*/

// Add it to wp_head
add_action('wp_head', 'wp_json_ld');
3
FaCE