Я застрял в странной ситуации. Я пытаюсь передать PHP-переменную в JS с помощью WordPress wp_localize_script и пытаюсь показать ее в console.info, но выводит ноль. вот мой код в functions.php
$conv = 1.36;
echo $conv;
add_action('wp_enqueue_scripts','cassets');
function cassets(){
wp_enqueue_script("all-script",get_template_directory_uri().'/all-script.js',array('jquery'),'',true);
$rate= array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate);
}
и в all-script.js
var conv = rate.conv;
console.info(conv);
В окне консоли отображается ноль, но значение эха php отображается правильно.
Заранее спасибо.
@tom-m Я пытался, но не получилось.
@Teemu - это не дубликат этого вопроса. WordPress позволяет легко передавать переменные PHP в JavaScript с помощью функции wp_localize_script(). Его переменные просто используются вне области видимости.
@Xhynk Да, я понял это почти сразу после закрытия, сейчас снова открылся.
$conv не определен в вашей функции.
@Teemu Итак, как я могу использовать значение $ conv.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваша проблема в том, что вы определили $conv вне своей функции.
Внутри вашей функции $conv было не определено. (Я думаю, вы также должны получить предупреждение от php).
Попробуй это:
add_action('wp_enqueue_scripts','cassets');
function cassets(){
$conv = 1.36;
wp_enqueue_script("all-script",get_template_directory_uri().'/all-script.js',array('jquery'),'',true);
$rate= array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate);
}
Вы используете свою переменную $conv вне области видимости. Взгляните на документацию Область видимости переменной PHP. Вы определяете $conv в глобальной области, но ссылаетесь на локальную область $conv в своей cassets() функции.
Вам нужно использовать функцию с областью действия $conv, либо определив ее внутри, либо передав ее функции как глобальную переменную, либо передав ее как Ссылка.
Вот несколько примеров:
add_action('wp_enqueue_scripts','cassets');
function cassets(){
$conv = 1.36;
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
}
$conv = 1.36;
add_action('wp_enqueue_scripts', 'cassets' );
function cassets(){
global $conv;
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
}
$conv = 1.36;
add_action('wp_enqueue_scripts', function() use($conv){
wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );
$rate = array(
'conv' => $conv,
);
wp_localize_script( 'all-script', 'rate', $rate );
});
Попробуйте обернуть свой javascript в
$(document).ready(function () { // your script here })