在unctions.php中使用wp_LOCALIZE_SCRIPT获取当前用户信息

时间:2016-12-08 作者:CaesarOG

我需要把信息从wp_get_current_user() 用于使用它的脚本的前端。为了实现这一点,我正在使用wp_localize_script() 传递信息。我把代码放在functions.php 但它不起作用。

给你。其思想是,在登录事件中add_to_login() 函数被触发,其任务是将函数添加到wp_enqueue_scripts, 调用add_to_enqueue(). 最后,在add_to_enqueue(), 我将信息传递给本地化脚本。我已经试过了wp_enqeue_scripts 所以不使用wp_login 此外问题似乎是当前用户直到wp_enqueue_scripts 发生。

function add_to_enqueue() {
    $current_user = wp_get_current_user();
    $dataToBePassed = array(
       \'userId\' => $current_user[\'user_login\'],
       \'userName\' => $current_user[\'display_name\'],
    );
    wp_register_script(\'getUserInfo\', get_template_directory_uri().\'/assets/js/getUserInfo.js\');

    wp_localize_script(\'getUserInfo\', \'php_vars\', $dataToBePassed);
    wp_enqueue_script(\'getUserInfo\'); 
}

function add_to_login() {
    add_action(\'wp_enqueue_scripts\', \'add_to_enqueue\');
    do_action(\'wp_enqueue_scripts\'); 
} 
add_action(\'wp_login\', \'add_to_login\');

2 个回复
最合适的回答,由SO网友:CaesarOG 整理而成
function hook_javascript() {

    if(is_user_logged_in()) {
        $output="<script> var userObject = ".json_encode(wp_get_current_user())."; console.log(JSON.stringify(userObject)); </script>";
        echo $output;
    } else {
        $output="<script> var userObject; </script>";
        echo $output;
    }
}
add_action(\'wp_head\',\'hook_javascript\');
SO网友:ngearing

如果您了解此操作here.

您将看到这个钩子提供了对两个参数的访问,$user->user_login (string)$user ( WP_User ).

像这样使用它,您将看到您可以访问的所有信息:

function add_to_login($user_login, $user)
{
    echo "<pre>".print_r($user, true)."</pre>";
}
add_action(\'wp_login\', \'add_to_login\', 10, 2);
但经过一点测试后,我不知道如何将此信息用于JS,因为用户在执行此操作后会立即被重定向。你的脚本没有时间做任何事情。

相关推荐

仅在一个页面中使用的JavaScript的本地化

Environment:<WordPress 5.8版WPML:4.4.10版What I am trying to achieve?我有一个JavaScript验证脚本,可以验证注册页面上的输入。此脚本显示错误消息。我想要两件事:字符串应使用WPML进行管理/翻译脚本应仅嵌入注册页面What did I already achieve?我向函数中添加了以下脚本。我的主题的php。add_action(\'wp_enqueue_scripts\', function() { // R