如何修改WooCommerce结账时无可用配送方式的错误提示?
WooCommerce 自定义无配送方式错误提示失效的解决方法
问题回顾
尝试自定义WooCommerce结账页面无可用配送方式的错误提示,先后使用woocommerce_checkout_no_shipping_available_notice、woocommerce_no_shipping_available_html、woocommerce_checkout_error三个钩子,但修改均未生效,仍显示默认提示。
可能的遗漏点及解决方案
1. 函数命名冲突
三次尝试使用了同一个函数名custom_change_shipping_error_message,PHP中同名函数会导致后定义的覆盖先定义的,直接影响钩子生效。需给每个钩子对应的函数设置唯一名称。
2. 钩子优先级被覆盖
主题或其他插件可能使用了更高优先级的钩子修改了提示文本,需要提高自己钩子的优先级(第三个参数数值越大,优先级越高)。
修正后的代码示例:
// 自定义结账页无配送方式提示 function custom_checkout_shipping_unavailable_notice( $message ) { return '我们当前暂不支持该地址配送,请修改配送日期后重试,或联系客服咨询。'; } add_filter( 'woocommerce_checkout_no_shipping_available_notice', 'custom_checkout_shipping_unavailable_notice', 99 ); // 自定义购物车等其他页面的无配送方式提示 function custom_global_shipping_unavailable_html( $message ) { return '我们当前暂不支持该地址配送,请修改配送日期后重试,或联系客服咨询。'; } add_filter( 'woocommerce_no_shipping_available_html', 'custom_global_shipping_unavailable_html', 99 );
3. 错误提示未通过目标钩子输出
部分场景下,无配送方式的错误提示是通过wc_add_notice直接添加的,这时候需要拦截woocommerce_add_error钩子来替换文本:
function custom_replace_shipping_error_text( $error ) { // 替换为你的WooCommerce默认错误文本(根据语言版本调整) $default_error = '抱歉,该地址暂无可用配送方式。'; if ( $error === $default_error ) { return '我们当前暂不支持该地址配送,请修改配送日期后重试,或联系客服咨询。'; } return $error; } add_filter( 'woocommerce_add_error', 'custom_replace_shipping_error_text', 99 );
4. 缓存问题
修改后如果没生效,先清除网站缓存(如WP Rocket、W3 Total Cache等插件缓存)和浏览器缓存,再刷新页面测试。
5. 代码放置位置错误
确保代码添加到当前主题的functions.php文件末尾,或使用自定义功能插件,不要直接修改WooCommerce核心文件(核心文件更新会覆盖修改)。
内容的提问来源于stack exchange,提问作者Rishikesh Dubey
相关产品推荐
相关产品推荐

