在Woocommerce 3中更改特定产品类别的添加到购物车文本

时间:2018-01-20 09:25:32

标签: php wordpress woocommerce hook-woocommerce custom-taxonomy

我想仅在特定类别上更改产品档案中的添加到购物车文本。例如,在预订单类别上,我希望代替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' );

}

2 个答案:

答案 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

相关文档:Woocommerce Conditional Tags

答案 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文字。