php 将添加到购物车按钮替换为WooCommerce上的自定义按钮

mftmpeh8  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(117)

我想更换为特定产品类别的“添加到购物车”按钮,当产品类型伊萨一个**'simple product'**。
我想这样做的页面上,我可以看到所有的产品(商店和档案页面),并在单一的产品页面。
下面的代码只是隐藏我的添加到购物车按钮从我的产品类别的所有职位:

function western_custom_buy_buttons(){

   $product = get_product();

   if ( has_term( 'categ1', 'product_cat') ){

       // removing the purchase buttons

       remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );

       remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

       remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );

       remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );

       remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );

       remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );

   }

}

add_action( 'wp', 'western_custom_buy_buttons' );

我怎么才能做到这一点?任何帮助请。

fcipmucu

fcipmucu1#

更新:* 仍然适用于WooCommerce 8.2*
这里是一个完整的工作解决方案,将取代所有添加到购物车按钮为您定义的产品类别和简单的产品,由一个自定义**"read more"**按钮。

**注意:**在某些自定义主题上,代码将无法工作,因为主题已经更改了默认的WooCommerce行为。

此代码经过测试,适用于WooCommerce 3+.

// Replacing add-to-cart button in shop pages and archives pages
add_filter( 'woocommerce_loop_add_to_cart_link',
'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );

function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {

    // WooCommerce compatibility
    if ( method_exists( $product, 'get_id' ) ) {
        $product_id = $product->get_id();
    } else {
        $product_id = $product->id;
    }

    if ( has_term( 'categ1', 'product_cat', $product_id ) && $product->is_type( 'simple') ) {
        // Set HERE your button link
        $link = get_permalink($product_id);
        $html = '<a href="'.$link.'" class="button alt add_to_cart_button">'.__("Read More", "woocommerce").'</a>';
    }
    return $html;
}

// Outputing a custom button in Single product pages (you need to set the button link)
function single_product_custom_button( ) {

    global $product;

    // WooCommerce compatibility
    if ( method_exists( $product, 'get_id' ) ) {
        $product_id = $product->get_id();
    } else {
        $product_id = $product->id;
    }

    if ( has_term( 'categ1', 'product_cat', $product_id ) ) {
        // Set HERE your button link
        $link = '#';
        echo '<a href="'.$link.'" class="button alt add_to_cart_button">'.__("Read More", "woocommerce").'</a>';
    }
}

// Replacing add-to-cart button in Single product pages
add_action( 'woocommerce_single_product_summary', 'removing_addtocart_buttons', 1 );
function removing_addtocart_buttons()
{
    global $product;

    // WooCommerce compatibility
    if ( method_exists( $product, 'get_id' ) ) {
        $product_id = $product->get_id();
    } else {
        $product_id = $product->id;
    }

    if ( has_term( 'categ1', 'product_cat', $product_id ) )
    {
        #### Removing the add-to-cart button ####

        ## Simple products
        remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );

        ## Other products types
        // remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
        // remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
        // remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
        // remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        // remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );

        #### Adding a custom replacement button ####

        ## Simple products
        add_action( 'woocommerce_simple_add_to_cart', 'single_product_custom_button', 30 );

        ## Other products types
        // add_action( 'woocommerce_grouped_add_to_cart', 'single_product_custom_button', 30 );
        // add_action( 'woocommerce_variable_add_to_cart', 'single_product_custom_button', 30 );
        // add_action( 'woocommerce_external_add_to_cart', 'single_product_custom_button', 30 );
        // add_action( 'woocommerce_single_product_summary', 'single_product_custom_button', 30 );
        // add_action( 'woocommerce_single_variation', 'single_product_custom_button', 20 );
    }
}

代码放在你的活动子主题(或主题)的function.php文件中,或者任何插件文件中。

相关问题