我想仅在特定类别上更改产品档案中的添加到购物车文本。例如,在预订单类别上,我希望代替add to cart
文字,而不是Preorder
。我不知道如何在下面的函数中识别预订类别。
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' ); // < 2.1
function woo_archive_custom_cart_button_text() {
return __( 'Preorder', 'woocommerce' );
}
答案 0 :(得分:4)
更新:
add_to_cart_text
挂钩已过时&amp;弃用。它在Woocommerce 3+中由woocommerce_product_add_to_cart_text
过滤器钩子替换。
它可以是两个不同的东西(因为你的问题不是那么清楚) ......
1)要在特定产品类别存档页面上定位产品,您应该以这种方式使用条件函数is_product_category()
:
add_filter( 'woocommerce_product_add_to_cart_text', 'product_cat_add_to_cart_button_text', 20, 1 );
function product_cat_add_to_cart_button_text( $text ) {
// Only for a specific product category archive pages
if( is_product_category( array('preorder') ) )
$text = __( 'Preorder', 'woocommerce' );
return $text;
}
代码进入活动子主题(或活动主题)的function.php文件。
2)要在Woocommerce存档页面上定位特定产品类别,您将以has term()
这种方式使用:
add_filter( 'woocommerce_product_add_to_cart_text', 'product_cat_add_to_cart_button_text', 20, 1 );
function product_cat_add_to_cart_button_text( $text ) {
// Only for a specific product category
if( has_term( array('preorder'), 'product_cat' ) )
$text = __( 'Preorder', 'woocommerce' );
return $text;
}
对于单个产品页面,您将另外使用:
add_filter( 'woocommerce_product_single_add_to_cart_text', 'product_cat_single_add_to_cart_button_text', 20, 1 );
function product_cat_single_add_to_cart_button_text( $text ) {
// Only for a specific product category
if( has_term( array('preorder'), 'product_cat' ) )
$text = __( 'Preorder', 'woocommerce' );
return $text;
}
代码进入活动子主题(或活动主题)的function.php文件。
经过测试和工作。
注意:如果设置了一些条件,所有过滤器挂钩函数都需要返回主参数,所以在这种情况下参数
$text
...
相关答案:Targeting product terms from a custom taxonomy in WooCommerce
答案 1 :(得分:1)
您可以在条件下使用has_term()。更新后的代码如下。
解决方案 - 1.使用过滤器add_to_cart_text
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
global $product;
if(has_term('your-special-category', 'product_cat', $product->get_id())){
$text = __( 'Preorder', 'woocommerce' );
}
return $text;
}
解决方案 - 2.使用过滤器woocommerce_product_add_to_cart_text
add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
global $product;
if(has_term('your-special-category', 'product_cat', $product->get_id())){
$text = __( 'Preorder', 'woocommerce' );
}
return $text;
}
其中your-special-category
将是您要替换的类别add to cart
文字。