php - 更改购物车和结帐以外的 WooCommerce 页面上“查看购物车”按钮的 URL
问题描述
我正在应用以下代码来更改商店页面上“查看购物车”按钮的 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();
}
我需要使用什么过滤器来实现单一产品页面上“Woocommerce 错误消息”中的“查看购物车”按钮的相同效果?
Woocommerce 错误消息”显示如下:““产品 X”的最大允许数量为 3(您的购物车中目前有 3 个)。“查看购物车”</p>
因此,我需要更改上述消息中“查看购物车”按钮的 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 ) )
)
);
更改 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;
}
要更改用于结帐 url 的所有 url 链接,wc_get_cart_url()
您将使用:
add_filter( 'woocommerce_get_cart_url', 'wc_get_checkout_url' );
另外:要使其在购物车和结帐页面以外的任何地方都可以使用,请使用以下内容:
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;
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。测试和工作。
推荐阅读
- javascript - 带有 vue.js、quasar 和 ES6 的数组理解合成器
- docker - 在 docker-compose Web 应用程序中配置 ldap
- vue.js - Vuetify外部分页不显示页码
- python - 通过向子对象添加数据来更新“主”JSON 对象
- node.js - 使用网页 node.js
- scala - 有没有一种很好的方法可以用换表加入火花流?
- python - numpy.tensordot 函数如何逐步工作?
- c# - SQL Server 和 ADO.NET | 例外:“不存在数据时尝试读取无效。”
- git - 使用 Visual Studio 时如何不丢失 TFS GIT 中的更改
- python-3.x - 尝试复制文件时出现权限被拒绝错误