将JSON结构化数据添加到WordPress

时间:2016-09-22 作者:Edgar Quintero

我想添加一些结构化数据,如下所示Google\'s recommendations. 按照他们网站上的说明,上面写着:

标记放置在HTML页面头部的脚本标记中。标记不必与用户可见的文本交错,这使得嵌套的数据项更容易表达,例如事件的MusicVenue的Postladdress所在的国家。此外,当JSON-LD数据动态注入页面内容时,Google可以读取JSON-LD数据,例如通过JavaScript代码或内容管理系统中的嵌入式小部件。

它说应该在HTML页面头部的脚本标记中添加它,但我想知道是否也可以通过包含在标题中的JSON文件添加它。php(加载在functions.php中)。如果可能,您会如何添加面包屑SD?

如果上述方法太麻烦,或者不是正确的方法,那么向WordPress站点添加结构化数据的最佳推荐方法是什么,这不涉及插件。

1 个回复
最合适的回答,由SO网友:FaCE 整理而成

如果您自己创建主题,则始终可以在主题本身中直接使用模式微数据标记。

正如我们在下面的示例中所看到的,向HTML添加额外属性可以使其符合模式。在本例中,我们使用itemscope, itemtypeitemprop:

摘自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 library 并通过将代码附加到wp_head 功能:

PHP-JSON-LD GitHub example:

<?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\');