根据Woocommerce可变产品中的产品属性显示自定义文本

时间:2019-02-01 22:54:07

标签: php wordpress woocommerce custom-taxonomy variations

我正在尝试根据当前产品的选项在可变产品页面上显示文本。 也就是说,如果该产品自带(属性)选项#1则显示文字#1, 如果此产品附带(属性)选项#2,则显示文字#2

我尝试了以下代码,但是无论可变属性如何,所有可变产品均显示text#1和text#2。

add_action('woocommerce_single_product_summary', 'display_custom_meta_field_value', 25 );
function display_custom_meta_field_value() {
    global $product;

    if ( $product->is_type( 'variable' ) ) {

        if (wc_attribute_taxonomy_name ('valve-options-white')  == 'pa_valve-options-white' ) 
        echo  '<p id="value-on-single-product"><i class="fas fa-info-circle"></i><a href="#" class="popmake-1087"> Which Valves Do I Need? CLICK HERE</a></p>';

        if ( (wc_attribute_taxonomy_name ('valve-options-chrome') ) == ('pa_valve-options-chrome') )
        echo  '<p id="value-on-single-product"><i class="fas fa-info-circle"></i><a href="#" class="popmake-697"> Which Valves Do I Need? CLICK HERE</a></p>';
    }
}

我只希望为每个变量产品显示text#1或text#2之一,这取决于已分配的属性(组)。 谢谢。

1 个答案:

答案 0 :(得分:1)

您应该尝试使用WC_Product_Variable get_variation_attributes()方法进行以下操作:

add_action('woocommerce_single_product_summary', 'display_custom_meta_field_value', 25 );
function display_custom_meta_field_value() {
    global $product;

    if ( $product->is_type( 'variable' ) ) {
        // Loop through variations attributes
        foreach($product->get_variation_attributes() as $taxonomy => $term_slugs ) {
            if( $taxonomy === 'pa_valve-options-white' ) {
                $popmake_id = '1087';
            } elseif( $taxonomy === 'pa_valve-options-chrome' ) {
                $popmake_id = '697';
            }
        }

        if ( isset($popmake_id) ) {
            $text = __( "Which Valves Do I Need? CLICK HERE","woocommerce" );
            echo '<p id="value-on-single-product"><i class="fas fa-info-circle"></i><a href="#" class="popmake-'.$popmake_id.'"> '.$text.'</a></p>';
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。