当产品出现在 WooCommerce 中时,显示带有术语的标签

问题描述 投票:0回答:1

在 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>
php wordpress woocommerce product advanced-custom-fields
1个回答
3
投票

有多种选择。其中 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 中测试并运行

© www.soinside.com 2019 - 2024. All rights reserved.