【问题标题】:Customizing add to cart buttons on Woocommerce shop page在 Woocommerce 商店页面上自定义添加到购物车按钮
【发布时间】:2018-05-12 08:22:39
【问题描述】:

我目前使用此功能来更改单个产品页面上的“添加到购物车”按钮,当它属于特定类别时。我希望这也可以更改缩略图下方商店页面上的“添加到购物车按钮”。任何帮助将不胜感激。

// Display Auction Link When 'auction' is in the category
function so_43372512_maybe_show_auction_link(){
if( has_term( 'auction', 'product_cat' ) ) {
    echo ' <style type="text/css">
                .woocommerce div.product form.cart, .woocommerce div.product p.cart {
                display:none ; }
                .woocommerce div.product p.price, .woocommerce div.product span.price {
                display:none ; }
                .woocommerce div.product p.stock {
                display:none ; }
                .product_meta {
                margin-top:20px;
                }
            </style>';
    echo '<p>Click This Button To View The Lot         </p>';
    global $product; 
    $skusearch = $product->get_sku();
    echo '<a id="auction" style="font-size:100%;color:#fff;padding:.618em 1em;border-radius:3px;background-color:#ed1c24;font-weight:700;" href="https://www.wirebids.com/search?q=' . $skusearch . '&open_closed=open" target="blank">' . __ ( 'On Auction Now!', 'your-plugin' ) . '</a>';
}
}
add_action( 'woocommerce_single_product_summary', 
'so_43372512_maybe_show_auction_link', 35 );

【问题讨论】:

    标签: php wordpress woocommerce product custom-taxonomy


    【解决方案1】:

    您将在下面找到将添加到购物车按钮替换为自定义“立即拍卖!”的必要代码按钮,也隐藏了产品价格……

    我还完全重新访问了您的代码,删除了模板“价格”和“添加到购物车”按钮,而是使用 CSS 隐藏它们,仅用于“拍卖”产品类别……

    代码:

    // Remove the price on archive pages (like shop) for 'auction' product category
    add_action('woocommerce_after_shop_loop_item_title', 'remove_price_from_archives', 9 );
    function remove_price_from_archives(){
        global $product, $post;
    
        // Only for 'auction' product category
        if ( has_term( 'clothing', 'product_cat' ) )
            remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
    }
    
    // Replace add to cart button on archive pages (like shop) for 'auction' product category
    add_action('woocommerce_after_shop_loop_item', 'replace_add_to_cart_button_in_archives', 9 );
    function replace_add_to_cart_button_in_archives() {
        global $product, $post;
    
        // Only for 'auction' product category
        if ( ! has_term( 'clothing', 'product_cat' ) ) return;
    
        // remove add to cart button
        remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
    
        $skusearch = $product->get_sku();
        $style = 'style="font-size:100%;color:#fff;padding:.618em 1em;border-radius:3px;background-color:#ed1c24;font-weight:700;"';
        $href = 'href="https://www.wirebids.com/search?q=' . $skusearch . '&open_closed=open"';
        echo '<div style="margin-top:24px;">
            <a '.$href.' id="auction" '.$style.' target="blank">' . __ ( 'On Auction Now!', 'your-plugin' ) . '</a>
        </div>';
    }
    
    // Remove the displayed price and add-to-cart button on single product pages for 'auction' product category
    // Replace add to cart by your custom "On Auction Now!" button
    add_action( 'woocommerce_single_product_summary', 'remove_the_displayed_price_from_variable_products', 9 );
    function remove_the_displayed_price_from_variable_products() {
        global $product, $post;
    
        // Only for 'auction' product category
        if ( has_term( 'clothing', 'product_cat' ) ){
            // remove product price
            remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
            // remove add-to-cart button
            remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30);
            // Add your custom "On Auction Now!" button
            add_action( 'woocommerce_single_product_summary', 'replace_add_to_cart_by_auction', 30 );
        }
    }
    
    // This function displays your custom button replacement in single product pages
    function replace_add_to_cart_by_auction(){
        global $product;
    
        $skusearch = $product->get_sku();
        $style = 'style="font-size:100%;color:#fff;padding:.618em 1em;border-radius:3px;background-color:#ed1c24;font-weight:700;"';
        $href = 'href="https://www.wirebids.com/search?q=' . $skusearch . '&open_closed=open"';
    
        echo '<p>Click This Button To View The Lot</p>
        <a '.$href.' id="auction" '.$style.' target="blank">' . __ ( 'On Auction Now!', 'your-plugin' ) . '</a>';
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    此代码已经过测试并且可以工作。

    【讨论】:

    • 我只有一个问题。 boggsequipment.com/product-category/used-products 这是我使用此代码的网站。无论出于何种原因,在第一个拍卖品之后,“阅读更多”链接就再也不会出现在第一个拍卖品之后的物品上。似乎所有商店页面都是如此。让我知道你的想法。除此之外,它完美无缺。
    • 问题出在网站上的其他代码上,而不是 Loic 的代码问题。
    【解决方案2】:

    我必须在 woocommerce 构建的网站中自定义添加到购物车按钮,我只需要在商店和类别页面上执行此操作。

    我使用以下功能完成了这项任务。将此函数放入您的functions.php文件并确保在进行任何更新之前进行备份,它对我有用,希望对你也一样。

    add_filter( 'woocommerce_loop_add_to_cart_link', 'ij_replace_add_to_cart_button', 10, 2 );
    function ij_replace_add_to_cart_button( $button, $product ) {
         
        $productid =  $product->id;
        $productslug =  $product->slug;
        $productname =  $product->name;
     
    if (is_product_category() || is_shop()) {
         
    $button_text = __("More Info", "woocommerce");
    $button_link = $product->get_permalink(); 
    $button = '<a href="'. $button_link .'"  data-quantity="1" class="button product_type_simple add_to_cart_button ajax_add_to_cart" data-product_id="'. $productid.'" data-product_sku="" aria-label="Add “'.$productname.'” to your cart" rel="nofollow"    data-productslug="'. $productslug.'" >' . $button_text . ' </a>';
    return $button;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2016-10-24
      • 1970-01-01
      • 2017-04-20
      • 2018-07-21
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      相关资源
      最近更新 更多