#javascript #php #wordpress
#JavaScript #php #WordPress
Вопрос:
В functions.php Я поставил, как показано ниже:
function wp12311_enqueue_scripts() {
wp_enqueue_script( 'wp12311-scripts', get_stylesheet_directory_uri() . '/test/scripts-test.js', array( 'jquery' ), false, true );
wp_localize_script( 'wp12311-scripts', 'userDetails', array(
'current_user' => wp_get_current_user()
) ) ;
}
add_action( 'wp_enqueue_scripts', 'wp12311_enqueue_scripts' );
Затем в /test/scripts-test.js У меня есть приведенный ниже код:
var userEmail = userDetails.current_user.username.data.user_email;
console.log("display is " userEmail);
В моем HTML-файле у меня есть приведенный ниже код:
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="/test/scripts-test.js"></script>
<title>Test</title>
<link href="https://fonts.googleapis.com/css?family=Dosis:400,700" rel="stylesheet" />
<link href="style.css" rel="stylesheet" />
</head>
<body>
</body>
</html>
Когда я загружаю HTML-файл, я получаю сообщение об ошибке:
scripts-test.js:3 Uncaught ReferenceError: userDetails is not defined
Пожалуйста, сообщите, в чем проблема и как я могу заставить ее работать. Спасибо.
Ответ №1:
Вы вызываете это слишком рано, попробуйте подождать, пока документ не будет готов. и лучше использовать глобальный объект window
jQuery(document).on( 'ready', function() {
var userEmail = window.userDetails.current_user.username.data.user_email;
console.log("display is " userEmail);
});