You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除WooCommerce结账页Packlink的自提点提示?

解决Packlink自提点提示移除问题

你之前的代码无效,核心原因是display_drop_off_message是Packlink_Checkout_Handler类的成员方法,而非全局独立函数,直接用函数名调用remove_action无法定位到类内的钩子绑定。以下是几种可行的解决方法:

方法一:通过类名精准移除动作

Packlink的钩子是通过类注册的,你可以用「类名+方法名」的格式来移除,同时要确保代码在插件注册钩子之后执行:

add_action( 'wp_loaded', function() {
    // 移除Packlink的自提点提示钩子
    remove_action( 'wc_add_notice', array( 'Packlink_Checkout_Handler', 'display_drop_off_message' ), 10 );
} );

方法二:过滤通知文本直接屏蔽

如果方法一无效,还可以通过WooCommerce的通知过滤钩子,直接清空目标提示内容:

add_filter( 'woocommerce_get_notices', function( $notices ) {
    $target_msg = '您必须先填写地址才能搜索自提点';
    
    foreach ( $notices as $type => $notice_group ) {
        foreach ( $notice_group as $key => $notice ) {
            if ( $notice['notice'] === $target_msg ) {
                unset( $notices[$type][$key] );
                // 清理空的通知分组
                if ( empty( $notices[$type] ) ) {
                    unset( $notices[$type] );
                }
            }
        }
    }
    
    return $notices;
} );

方法三:提高移除动作的优先级

如果Packlink注册钩子的优先级比你的代码高,可以尝试用更高优先级确保代码后执行:

add_action( 'init', function() {
    remove_action( 'wc_add_notice', array( 'Packlink_Checkout_Handler', 'display_drop_off_message' ), 10 );
}, 20 ); // 优先级设为20,确保晚于插件默认的10执行

注意事项

  • 代码请添加到当前主题的functions.php文件或自定义插件中,不要直接修改Packlink核心文件,避免插件更新后失效。
  • 确认类名Packlink_Checkout_Handler是否与你使用的插件版本一致,可查看class-checkout-handler.php文件顶部的类定义。

内容的提问来源于stack exchange,提问作者Emiliano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:52:47