一个钩子可以在 wp_head 里面另一个钩子吗?

Can one hook in wp_head inside other hook?

每当用户成功登录或注册时,我都必须在我们网站的头部添加一些脚本。对于登录和注册表单,我们使用 Ultimate Member 插件,它有一个钩子方法 um_user_loginum_user_register,我可以使用它。

即如果用户登录成功,请在 Java 脚本中执行 head.append(...)

不过我是一名 NodeJS 和 Java 开发人员,对 Wordpress 插件编程完全陌生。到目前为止,我找不到适合这个听起来简单的任务的解决方案。

我的想法是挂钩 um_user_login 操作并执行类似的操作:

add_action('um_user_login', 'add_tracking_after_login', 10);

function add_tracking_after_login() {
    add_action('wp_head', function() {
        echo '<script type="text/javascript" src="my_script.js"></script>';
    });
}

然而,我已经用不同的日志记录测试了这个,但是似乎 wp_head 的钩子函数从未执行过(函数 add_tracking_after_login 是,因为我也用日志记录测试过这个).所以我想,我不能以这种方式向 wp_head 添加操作。

有没有其他方法可以实现要求的功能?还是因为我是 WordPress 插件编程的新手,所以我做错了?


编辑:为了避免混淆,这只是客户要求的几项任务之一。我还需要使用我们的联系表对成功注册和成功发送的电子邮件做出反应。在这些情况下,我找不到与 Harry SM 下面的答案类似的解决方法。我需要对我们使用的插件的成功事件做出反应。

在此先致谢并致以最诚挚的问候

您可以在 wp_head 挂钩下为登录用户添加条件。

add_action('wp_head', 'add_tracking_after_login', 10);

function add_tracking_after_login() {
    if ( is_user_logged_in() ) {
        echo '<script type="text/javascript" src="my_script.js"></script>';
    }
}

为您的插件钩子尝试此代码

add_action('um_user_login', 'add_tracking_after_login', 10); 
function add_tracking_after_login() { 
    wp_enqueue_script( 'custom-script', get_stylesheet_directory_uri() . '/js/custom_script.js', array( 'jquery' ) ); 
}