【问题标题】:Can one hook in wp_head inside other hook?wp_head 中的一个钩子可以钩在另一个钩子中吗?
【发布时间】:2018-01-29 13:54:05
【问题描述】:

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

即如果用户登录成功,请在 JavaScript 中执行 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 下面的答案类似的解决方法。我需要对我们使用的插件的成功事件做出反应。

提前致谢并致以最诚挚的问候

【问题讨论】:

    标签: wordpress html-head wordpress-hook


    【解决方案1】:

    您可以在 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>';
        }
    }
    

    【讨论】:

    • 谢谢,这在这种情况下应该可以工作。可悲的是,这是客户想要完成的最简单的任务。我还需要对用户注册是否成功以及是否通过“联系我们”表单成功发送电子邮件做出反应。在这些情况下,此解决方法将无济于事。我要更新我的问题。
    【解决方案2】:

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

    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' ) ); 
    }
    

    【讨论】:

    • 只是为了确定,因为我有一种感觉,由于另一个插件,某些东西被破坏了:如果我在这种情况下使用 js 文件 only,那么我从来没有将它添加到 html 头中,没有 wp_register_script 等,那么您发布的代码应该可以工作吗?我尝试过相同的方法,但不知何故,该脚本从未被调用,而当我使用add_action('wp_head',...) 调用相同的 sn-p 时,它是。这不可能……
    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 2022-10-04
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多