php - Woocommerce 产品动态模式标记
问题描述
我有下一个代码为 WooCommerce 产品动态添加模式标记:
add_action('wp_head', 'schema_product');
function schema_product(){
global $product;
if (is_singular('product')) { ?>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"name": "<?php echo $product->get_name(); ?>",
"description": "Ver descripción en el link incluido.",
"image": "<?php echo get_the_post_thumbnail_url( $product->get_id(), 'full' ); ?>",
"url": "<?php echo get_permalink( $product->get_id() ); ?>",
"sku": "<?php echo $product->get_sku(); ?>",
"brand": "<?php echo get_post_meta(get_the_ID(), 'brand', TRUE); ?>",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/<?php echo $product->is_in_stock() ? 'InStock' : 'OutOfStock'; ?>",
"price": "<?php echo $product->get_price(); ?>",
"priceValidUntil": "2019-12-31",
"priceCurrency": "<?php echo get_woocommerce_currency(); ?>",
"url": "<?php echo get_permalink( $product->get_id() ); ?>"
},
"aggregateRating": {
"@type": "AggregateRating",
"bestRating": "5",
"ratingValue": "5",
"reviewCount": "3"
},
"review": {
"author": "Federico",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "4"
}
}
}
</script>
<?php }
};
但是当代码运行时,结果仅仅是
体育
在其他模式类型中,例如首页或博客文章,一切正常。但似乎在一个地方 PHP 正在与 HTML 作斗争。
解决方案
您的代码中有一些错误……请尝试以下操作:
add_action('wp_head', 'schema_product');
function schema_product(){
global $product;
if ( is_product() && ! is_a($product, 'WC_Product') ) {
$product = wc_get_product( get_the_id() );
}
if ( is_product() && is_a($product, 'WC_Product') ) :
?>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"name": "<?php echo $product->get_name(); ?>",
"description": "Ver descripción en el link incluido.",
"image": "<?php echo get_the_post_thumbnail_url( $product->get_id(), 'full' ); ?>",
"url": "<?php echo get_permalink( $product->get_id() ); ?>",
"sku": "<?php echo $product->get_sku(); ?>",
"brand": "<?php echo $product->get_meta('brand'); ?>",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/<?php echo $product->is_in_stock() ? 'InStock' : 'OutOfStock'; ?>",
"price": "<?php echo $product->get_price(); ?>",
"priceValidUntil": "2019-12-31",
"priceCurrency": "<?php echo get_woocommerce_currency(); ?>",
"url": "<?php echo $product->get_permalink(); ?>"
},
"aggregateRating": {
"@type": "AggregateRating",
"bestRating": "5",
"ratingValue": "5",
"reviewCount": "3"
},
"review": {
"author": "Federico",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "4"
}
}
}
</script>
<?php
endif;
}
代码在您的活动子主题(或主题)的 function.php 文件中。测试和工作。
对于“品牌”:
如果它是自定义分类法(例如使用 Woocommerce Brands 插件的 wen),您将不得不替换:
"brand": "<?php echo $product->get_meta('brand'); ?>",
通过这一行(分类法在这里' product_brand
'):
"brand": "<?php $brand = wp_get_post_terms( $product->get_id(), 'product_brand' ); $brand = reset($brand); echo $brand->name; ?>",
推荐阅读
- c++ - 解析 C++ 中 Curl 请求接收到的 JSON
- javascript - 如果没有 webpack.config.js 文件,如何正确安装 Vuetify?
- mysql - MySQL ORDER BY 轮换值
- server - Netlify 上是否可以进行基于 cookie 的重定向?
- javascript - jQuery:使用范围滑块控制 CSS
- reactjs - 如何使用 React 将焦点设置在动态添加的字段上
- list - 比较两个文本文件在 Powershell 中不起作用
- celery - Celery GroupResult 和 ResultSet 有什么区别?
- python - 不同大小Python 3的总和列表
- python - 如何为谷歌云 sql 或 python 数据框中的每滚动 3 行分组?