我需要把信息从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\');
最合适的回答,由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,因为用户在执行此操作后会立即被重定向。你的脚本没有时间做任何事情。