将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别相关的知识,希望对你有一定的参考价值。

我正在尝试添加一个自定义链接按钮,该按钮指向联系页面 - 在第一个条件下显示“联系我们”文本,按钮上的自定义URL而不是“添加到购物篮”按钮。

怎么做?到目前为止这是我的代码。它显示每个产品的自定义按钮文本,它是“64”类别的一部分。这正是我想要的。但是如何添加该按钮可以将功能从购物车按钮更改为自定义链接按钮?我想如果必须改变这个购物车按钮功能。怎么样?

add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text' );

function woo_custom_cart_button_text() {
    global $product;
    $cat_id = 64;

    $product->get_category_ids();
    if ( in_array( $cat_id, $product->get_category_ids() ) ) {
        return __( 'Contact us', 'woocommerce' );
    }
    else {
        return __( 'Add to Basket', 'woocommerce' );
    }
}
答案

对于您的产品类别ID 64,以下代码将通过单个产品页面中的自定义按钮和存档页面上的产品的链接按钮替换“添加到购物车”按钮:

// The custom replacement button function
function custom_product_button(){
    // HERE your custom button text and link
    $button_text = __( "Custom text", "woocommerce" );
    $button_link = '#';

    // Display button
    echo '<a class="button" href="'.$button_link.'">' . $button_text . '</a>';
}

// Replacing the single product button add to cart by a custom button for a specific product category
add_action( 'woocommerce_single_product_summary', 'replace_single_add_to_cart_button', 1 );
function replace_single_add_to_cart_button() {
    global $product;

    // Only for product category ID 64
    if( has_term( '64', 'product_cat', $product->get_id() ) ){

        // For variable product types (keeping attribute select fields)
        if( $product->is_type( 'variable' ) ) {
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
            add_action( 'woocommerce_single_variation', 'custom_product_button', 20 );
        }
        // For all other product types
        else {
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            add_action( 'woocommerce_single_product_summary', 'custom_product_button', 30 );
        }
    }
}

// Replacing the button add to cart by a link to the product in Shop and archives pages for as specific product category
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );
function replace_loop_add_to_cart_button( $button, $product  ) {
    // Only for product category ID 64
    if( has_term( '64', 'product_cat', $product->get_id() ) ){
        $button_text = __( "View product", "woocommerce" );
        $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
    }

    return $button;
}

代码位于活动子主题(或主题)的function.php文件中。

经过测试和工作。

另一答案

在挂钩中添加过滤器优先级

add_filter('woocommerce_product_single_add_to_cart_text','woo_custom_cart_button_text',50);

以上是关于将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别的主要内容,如果未能解决你的问题,请参考以下文章

仅在 WooCommerce 单一产品页面上将添加到购物车文本更改为“应用”

php WooCommerce:AJAX在单一产品页面上添加到购物车

将添加到购物车按钮替换为链接到 WooCommerce 3 中商店页面上的产品页面的更多内容

自定义特定 WooCommerce 产品类别上的“添加到购物车”按钮

Woocommerce 自定义添加到购物车循环

WooCommerce 添加到购物车重定向到以前的 URL