在WooCommerce中显示不同类别的不同自定义字段

时间:2016-08-04 06:09:32

标签: php wordpress woocommerce categories hook-woocommerce

我正在尝试在WooCommerce中为不同的类别显示不同的自定义字段。

我在content-single-product.php模板文件中使用了以下条件语句:

      if(is_product_category('categoryname'))
    {
         // display my customized field
    }
else
{
do_action( 'woocommerce_after_single_product_summary' );
}

但这不适合我。

有没有更好的方法来纠正这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

条件is_product_category()在单个产品模板中不适用于您。在这种情况下,正确的条件是两个的组合:

if ( is_product() && has_term( 'categoryname', 'product_cat' ) ) {

    // display my customized field

} 
....

您似乎试图覆盖 content-single-product.php 模板。

在您的ELSE语句中移动 woocommerce_single_product_summary 挂钩并不是一个好主意,只有当您不想显示 'categoryname'产品那3个钩子函数:

 * @hooked woocommerce_output_product_data_tabs - 10
 * @hooked woocommerce_upsell_display - 15
 * @hooked woocommerce_output_related_products - 20

相反(在这里覆盖模板)你可以使用更方便的2个钩子,在钩子函数中嵌入代码(在你的活动子主题或主题的function.php文件中):< / p>

//In hook 'woocommerce_single_product_summary' with priority up to 50.

add_action( 'woocommerce_single_product_summary', 'displaying_my_customized_field', 100);
function displaying_my_customized_field( $woocommerce_template_single_title, $int ) { 
    if ( is_product() && has_term( 'categoryname', 'product_cat' ) ) {

        // echoing my customized field

    } 
}; 

OR

// In hook 'woocommerce_after_single_product_summary' with priority less than 10

add_action( 'woocommerce_after_single_product_summary', 'displaying_my_customized_field', 5);
function displaying_my_customized_field( $woocommerce_template_single_title, $int ) { 
    if ( is_product() && has_term( 'categoryname', 'product_cat' ) ) {

        // echoing my customized field

    } 
};