如何使用 Hook Wordpress

How to use Hook Wordpress

我正在使用一个用户头像从前端上传个人资料图片。 Link 使用文档插件:https://github.com/onedesigns/one-user-avatar

文档中说 - 如果您使用其他字段构建自己的个人资料编辑页面,一个用户头像会自动添加到 show_user_profile 和 edit_user_profile 挂钩。如果您希望在其自己的部分中使用一个用户头像,您可以添加另一个挂钩:

do_action( 'edit_user_avatar', $current_user );

然后,要将一个用户头像添加到该挂钩并将其从管理面板外的其他挂钩中删除,您可以将此代码添加到主题的 functions.php 文件中:

function my_avatar_filter() {
    // Remove from show_user_profile hook
    remove_action( 'show_user_profile', array( 'wp_user_avatar', 'wpua_action_show_user_profile' ) );
    remove_action( 'show_user_profile', array( 'wp_user_avatar', 'wpua_media_upload_scripts' ) );

    // Remove from edit_user_profile hook
    remove_action( 'edit_user_profile', array( 'wp_user_avatar', 'wpua_action_show_user_profile' ) );
    remove_action( 'edit_user_profile', array( 'wp_user_avatar', 'wpua_media_upload_scripts' ) );

    // Add to edit_user_avatar hook
    add_action( 'edit_user_avatar', array( 'wp_user_avatar', 'wpua_action_show_user_profile' ) );
    add_action( 'edit_user_avatar', array( 'wp_user_avatar', 'wpua_media_upload_scripts' ) );
}

// Loads only outside of administration panel
if ( ! is_admin() ) {
    add_action( 'init','my_avatar_filter' );
}

我想做的是将一个用户头像添加到用户个人资料编辑页面,但我不清楚如何使用建议的挂钩。

想法是将一个用户头像添加到高级自定义字段 (ACF) 字段:https://www.advancedcustomfields.com/resources/

或者让它与 Profile Builder Pro 一起使用:https://www.cozmoslabs.com/docs/profile-builder-2/

我有所有的文档,我一直在寻找解决方案超过 5 天,但我尝试了几次都没有成功。由于我对 Wordpress 和 php 比较陌生,所以我不清楚要采取什么步骤。

有人可以给我提示吗?

好吧,让我解释一下WordPress中钩子的概念。通常,钩子是 WordPress 中的执行点,在这些特定的执行点上,可以操作数据或附加内容。 WordPress 中有两种类型的钩子 i)动作挂钩 ii)过滤挂钩

  1. 动作钩子一般用于附加内容或修改内容而不返回内容。 例如 do_action('hook_tag_name', $data) -> 这是第三方开发者在插件中标记挂钩的方式。 现在如果有人想修改 'hook_tag_name' 上的数据,那么只需在此处使用此语法 add_action('hook_tag_name', 'callback_function', 10, 1)。在此回调函数 'callback_function' 中,可以简单地插入 his/her 自己的自定义内容,例如 -> function callback_function($data) {echo "Hello World!";} 类似于上面的语法,你可以修改内容而不返回它,在过滤器钩子的情况下,你必须在附加到钩子的回调函数中使用关键字 'return' 。此外,数字“10”-> 是优先级,1-> 是挂钩中传递的参数数量。在这种情况下,“$data”是实际上是 1 个参数的参数。您可以像这样传递多个参数 -> do_action('hook_tag_name', $data, $data2, ...)

  2. 对于过滤器,这是语法 apply_filters('hook_tag_name', $data)。要修改 'hook_tag_name' 内的数据,只需在此处使用此语法 -> add_filter('hook_tag_name', 'callback_function', 10, 1),其中“10”是过滤器挂钩执行的优先级,“1”是过滤器内传递的数据数钩。但请注意,在过滤器钩子方面,如果在过滤器钩子上传递了 'data',则需要将其返回,如果不返回则会抛出错误。这是它的样子-> function callback_function($data){ return $data; }

现在回到你的观点,在你的例子中wpua_action_show_user_profile是回调函数。像这样定义这个函数 function wpua_action_show_user_profile($current_user_object)。您需要修改 $current_user_object 个人资料图片 url。为了改变头像,如果您需要其他任何东西,请告诉我。或者您可以使用此代码更改头像的 src。这个钩子会帮助你 -> add_filter('get_avatar_data', function($user, $data){var_dump($user);return $user;},10, 2);。在应用任何新头像 link

之前确保 var_dump 负载