Man*_*Ias -2 php wordpress woocommerce
我正在应用以下代码来更改商店页面上“查看购物车”按钮的 URL。
// Change View Cart Button URL from /cart to /checkout
add_filter( 'woocommerce_add_to_cart_redirect', 'cart_to_checkout' );
function cart_to_checkout( $url ) {
return wc_get_checkout_url();
}
Run Code Online (Sandbox Code Playgroud)
我需要使用什么过滤器来实现单个产品页面上“Woocommerce 错误消息”中的“查看购物车”按钮的相同效果?
Woocommerce 错误消息”显示如下:“'产品 X' 的最大允许数量为 3(您的购物车中目前有 3 个)。“查看购物车”
因此,我需要更改上述消息中“查看购物车”按钮的 URL。
而且,所有查看购物车按钮都必须指向结帐页面而不是购物车页面。
谢谢!
由于此通知在WC_Cart add_to_cart()方法中硬编码(从行1075到1083):
throw new Exception(
sprintf(
'<a href="%s" class="button wc-forward">%s</a> %s',
wc_get_cart_url(),
__( 'View cart', 'woocommerce' ),
/* translators: 1: quantity in stock 2: current quantity */
sprintf( __( 'You cannot add that amount to the cart — we have %1$s in stock and you already have %2$s in your cart.', 'woocommerce' ), wc_format_stock_quantity_for_display( $product_data->get_stock_quantity(), $product_data ), wc_format_stock_quantity_for_display( $products_qty_in_cart[ $product_data->get_stock_managed_by_id() ], $product_data ) )
)
);
Run Code Online (Sandbox Code Playgroud)
更改 url 链接的唯一方法是使用位于函数内部的woocommerce_get_cart_url过滤器钩子(在本通知中使用),仅适用于单个产品页面:wc_get_cart_url()
add_filter( 'woocommerce_get_cart_url', 'filter_get_cart_url' );
function filter_get_cart_url( $url ) {
// Only on single product pages
if( is_product() )
$url = wc_get_checkout_url();
return $url;
}
Run Code Online (Sandbox Code Playgroud)
要改变所有URL链接被使用wc_get_cart_url()到结账的网址,你会使用,而不是:
add_filter( 'woocommerce_get_cart_url', 'wc_get_checkout_url' );
Run Code Online (Sandbox Code Playgroud)
添加:要使其在购物车和结帐页面以外的任何地方都可以使用,请使用以下内容:
add_filter( 'woocommerce_get_cart_url', 'filter_get_cart_url' );
function filter_get_cart_url( $url ) {
// Except on cart and checkout pages
if( ! ( is_cart() || is_checkout() ) )
$url = wc_get_checkout_url();
return $url;
}
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。
相关:更改 Woocommerce 中产品循环上的“查看购物车”产品叠加按钮