Woocommerce替换添加到购物车网址链接到产品页面

时间:2014-10-08 01:44:20

标签: woocommerce

我使用此短代码显示产品[product_category category =“extras”orderby =“date”]。

可变产品显示“选择选项”,单个产品显示“添加到购物车”。我能够将两者的文字都改为“查看产品”。

现在的问题是我需要更改那些曾经说过“添加到购物车”的网址,因为它们没有链接到产品页面而是“添加到购物车”。

我知道我可以编辑woocommerce模板,但我需要将其作为函数添加到function.php

我不需要任何按钮,只需更换网址。

再次目的: 替换/重定向“添加到购物车”网址链接到产品页面(仅在循环中,显然不在产品页面中)。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

如果有人选择更改woocommerce文件(当然是儿童主题!)。

在档案中:/loop/add-to-cart.php

变化:

global $product;

echo apply_filters( 'woocommerce_loop_add_to_cart_link',
    sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button %s product_type_%s">%s</a>',
        esc_url( $product->add_to_cart_url() ),
        esc_attr( $product->id ),
        esc_attr( $product->get_sku() ),
        esc_attr( isset( $quantity ) ? $quantity : 1 ),
        $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
        esc_attr( $product->product_type ),
        esc_html( $product->add_to_cart_text() )
    ),
$product );

要:

global $product;

if ( $product->product_type == "simple" ) {
    $simpleURL = get_permalink();
    $simpleLabel =  "View Product";  // BUTTON LABEL HERE
} else {
    $simpleURL =  $product->add_to_cart_url();  
    $simpleLabel = $product->add_to_cart_text();
};

echo apply_filters( 'woocommerce_loop_add_to_cart_link',
    sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button %s product_type_%s">%s</a>',
        esc_url( $simpleURL ),
        esc_attr( $product->id ),
        esc_attr( $product->get_sku() ),
        esc_attr( isset( $quantity ) ? $quantity : 1 ),
        $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
        esc_attr( $product->product_type ),
        esc_html( $simpleLabel )
    ),
$product );

答案 1 :(得分:1)

我相信你可以在WooCommerce设置中禁用AJAX add-to-cart功能。

如果由于某种原因这不令人满意,您可以查看loop/add-to-cart.php模板。添加到购物车链接是可过滤的。如果您查看add-to-cart.js,您可以看到针对add_to_cart button类的任何链接触发了AJAX添加到购物车功能,而适用于{{1}的按钮class ... ie:仅用于简单的产品。根据您的样式,您可以从链接中删除产品类型类或product_type_simple类。在下面的示例中,我删除了add_to_cart_button类。

add_to_cart_button

答案 2 :(得分:1)

在你主题的funtions.php中添加以下代码:

/*STEP 1 - REMOVE ADD TO CART BUTTON ON PRODUCT ARCHIVE (SHOP) */

 function remove_loop_button(){
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    }
    add_action('init','remove_loop_button');

    /*STEP 2 -ADD NEW BUTTON THAT LINKS TO PRODUCT PAGE FOR EACH PRODUCT */

        add_action('woocommerce_after_shop_loop_item','replace_add_to_cart');
        function replace_add_to_cart() {
            global $product;
            $link = $product->get_permalink();

            echo '<p style="text-align:center;margin-top:10px;">';
            $currentlang = get_bloginfo('language');
            //for multilanguage
            if($currentlang=="en-GB"){
                echo do_shortcode('<a  href="'.$link.'" class="button addtocartbutton">View Product</a>');
            } elseif($currentlang=="fr-FR"){
                echo do_shortcode('<a  href="'.$link.'" class="button addtocartbutton">Voir le produit</a>');
            }else {
               echo do_shortcode('<a  href="'.$link.'" class="button addtocartbutton">Ver Producto</a>');   
            }
            echo '</p>';
        }