wp_get_current_user()
からの情報を、それを使用するスクリプトのフロントエンドに渡す必要があります。これを実現するために、wp_localize_script()
を使用して情報を渡します。コードをfunctions.php
ファイルの先頭に配置しましたが、機能しません。
ここにあります。考えは、ログインイベントでadd_to_login()
関数がトリガーされ、その機能はadd_to_enqueue()
と呼ばれるwp_enqueue_scripts
に関数を追加することです。最後に、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');
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');
あなたがこの行動について読んだなら ここ 。
このフックが$user->user_login (string)
と$user ( WP_User
の2つのパラメータへのアクセスを提供することがわかります。
このように使うと、アクセスできるすべての情報が表示されます。
function add_to_login($user_login, $user)
{
echo "<pre>".print_r($user, true)."</pre>";
}
add_action('wp_login', 'add_to_login', 10, 2);
しかし、ちょっとしたテストの後、ユーザーがこのアクションの後すぐにリダイレクトされるため、この情報をJSでどのように使用できるかわかりません。あなたのスクリプトは何もする時間がないでしょう。