当产品在 WooCommerce 中有特色时显示带有术语的标签

Show label with term when product is featured in WooCommerce

在 WooCommerce 单个产品页面上,通过高级自定义字段使用 true/false,我有一个标签,它在文本中显示 'Featured' 个术语并且工作正常。

这个...

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 的 true/false ID。

如果我没看错,特色产品现在由 product_visibility WooCommerce 中特色术语的自定义分类处理。

如果是这样,我可以在 span 标签中使用 Tax Query 然后 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(),即 returns 包含特色产品 ID 的数组。

如果 productID 存在于数组中,则它是特色产品。

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

中测试和工作