在 WooCommerce 单一产品页面上,通过高级自定义字段使用 true/false,我有一个标签,在文本中显示“特色”术语并且工作正常。
这个...
add_action( 'woocommerce_before_single_product_summary', 'property_main_details_field', 1 );
function property_main_details_field() {
if ( get_field('featured_property') == 1 ) {
?>
<span class="property-contract-badge">Featured</span>
<?php
}
}
但是,考虑到 WooCommerce 已经内置了特色产品选择,我想最小化自定义字段并将其替换为 WooCommerce 中的真/假 ID。
如果我没看错的话,特色产品现在由 WooCommerce 中特色术语的 Product_visibility 自定义分类法处理。
如果是这样,我可以使用税务查询,然后在跨度标签中使用
echo $term->name;
吗?
<span class="property-badge">
<?php
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
'operator' => 'IN',
);
?>
</span>
有多种选择。其中 1 是使用 wc_get_featured_product_ids(),它返回一个包含特色产品 ID 的数组。
如果该产品ID存在于数组中,则它是特色产品。
function action_woocommerce_before_single_product_summary() {
global $product;
// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Get productID
$product_id = $product->get_id();
// Returns an array containing the IDs of the featured products.
$featured_product_ids = wc_get_featured_product_ids();
// Checks if a value exists in an array
if ( in_array( $product_id, $featured_product_ids ) ) {
echo '<span class="property-contract-badge">Featured</span>';
} else {
echo 'NOT featured';
}
}
}
add_action( 'woocommerce_before_single_product_summary', 'action_woocommerce_before_single_product_summary', 1 );
代码位于活动子主题(或活动主题)的functions.php 文件中。已在 Wordpress 5.8.1 和 WooCommerce 5.8.0 中测试并运行