WordPress - 添加到钩子的动作在回调列表中消失

问题描述

在通过 xDebug 调试数小时后遇到了一个非常令人沮丧的错误。当从插件 (BuddyPress) 中触发 do_action 时,通过 add_action 添加到钩子的函数丢失或无法访问。

我在我的主题文件夹中所指的功能:UpdateSalesForceAvatar

操作:'bp_members_avatar_uploaded'

为上述函数添加add_action的主题代码

       public static function Registeractions(): void {
            add_action( 'xprofile_data_after_save',[self::class,'UpdateSalesforce'] );
            add_action( 'xprofile_data_after_delete','UpdateSalesforce'] );
            add_action( 'bp_members_avatar_uploaded','UpdateSalesForceAvatar'],10,3);
            add_filter( 'bp_core_avatar_folder_dir','HandleAvatarFolderDir']);

        }

UpdateSalesForceAvatar 的函数原型:

public static function UpdateSalesForceAvatar($item_id,$type,$avatar_data) {

以下是屏幕截图和调试信息,希望可以帮助我理解为什么从插件访问全局 $wp_filters 时它会丢失。

add_action 后的第一张截图

After add_action

未来在 BuddyPress 中执行代码后的第二张屏幕截图

Call from within Buddypress plugin(web/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php Line 1255

感谢所有反馈!

解决方法

有时您必须尝试另一个位置,这可能是因为插件与该操作交互。

解决方案更像是一种解决方法,将操作的注册移至functions.php