it-swarm.com.de

Holen Sie sich aktuelle Benutzerinformationen mit wp_localize_script in functions.php

Ich muss die Informationen von wp_get_current_user() an das Front-End für ein Skript übergeben, das sie verwendet. Um dies zu erreichen, benutze ich wp_localize_script(), um die Informationen weiterzugeben. Ich füge den Code oben in meine functions.php -Datei ein, aber es funktioniert nicht.

Hier ist es. Die Idee ist, dass beim Login-Ereignis die Funktion add_to_login() ausgelöst wird, deren Aufgabe es ist, dem wp_enqueue_scripts eine Funktion hinzuzufügen, die add_to_enqueue() heißt. Schließlich übergebe ich in add_to_enqueue() die Informationen an das lokalisierte Skript. Ich habe dies bereits nur mit wp_enqeue_scripts ausprobiert, also ohne wp_login zusätzlich zu verwenden. Das Problem bestand anscheinend darin, dass der aktuelle Benutzer erst nach dem Auftreten von wp_enqueue_scripts zum Abrufen verfügbar ist.

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');
1
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');
1
CaesarOG

Wenn Sie über diese Aktion lesen hier .

Sie werden sehen, dass dieser Hook den Zugriff auf zwei Parameter ($user->user_login (string) und $user ( WP_User) ermöglicht.

Auf diese Weise sehen Sie alle Informationen, auf die Sie Zugriff haben:

function add_to_login($user_login, $user)
{
    echo "<pre>".print_r($user, true)."</pre>";
}
add_action('wp_login', 'add_to_login', 10, 2);

Aber nach einigem Testen kann ich nicht sehen, wie Sie diese Informationen mit Ihrem JS verwenden können, da der Benutzer nach dieser Aktion sofort umgeleitet wird. Ihr Skript hat keine Zeit, etwas zu tun.

1
ngearing