我正在使用此简码来显示产品 [product_category category="extras"orderby="date"]。
可变产品显示“选择选项”,单个产品显示“添加到购物车”。我能够将两者的文本更改为“查看产品”。
现在的问题是我需要更改那些曾经说“添加到购物车”的网址,因为它们不链接到产品页面,而是“添加到购物车”。
我知道我可以编辑 woocommerce 模板,但我需要将它作为一个函数添加到 function.php
我不需要任何按钮,只需替换 url。
所以再次目的:
替换/重定向“添加到购物车”网址以链接到产品页面(仅在循环中,显然不在产品页面中)。
有人可以帮忙吗?
最佳答案
如果有人确实选择更改 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 );
关于Woocommerce 替换添加到购物车 url 以链接到产品页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247988/