问题描述
在通过 xDebug 调试数小时后遇到了一个非常令人沮丧的错误。当从插件 (BuddyPress) 中触发 do_action 时,通过 add_action 添加到钩子的函数丢失或无法访问。
我在我的主题文件夹中所指的功能:UpdateSalesForceAvatar
操作:'bp_members_avatar_uploaded'
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 后的第一张截图
未来在 BuddyPress 中执行代码后的第二张屏幕截图
感谢所有反馈!
解决方法
有时您必须尝试另一个位置,这可能是因为插件与该操作交互。
解决方案更像是一种解决方法,将操作的注册移至functions.php