Estoy tratando de pasar variables php a js como:
function wpdocs_theme_name_scripts() { if (is_checkout()) { wp_enqueue_script('script-to-pass', get_stylesheet_directory_uri() . '/assets/js/chkt-script.js', ['jquery'], $GLOBALS['dynamic_version'], ''); } } add_action('wp_print_scripts', 'wpdocs_theme_name_scripts'); $chktValStrings = array( 'phoneEmpty' => __( 'Phone empty', 'flatsome' ), 'phoneFormat' => __( 'Phone format', 'flatsome' ), ); wp_add_inline_script( 'script-to-pass', 'var php_vars = ' . wp_json_encode( $chktValStrings ), 'before' ); //this also didn't work //wp_localize_script( 'script-to-pass', 'php_vars', $chktValStrings);
y luego llame a js:
(function ($) { console.log(php_vars.phoneEmpty) console.log(php_vars.phoneFormat) }(jQuery))
También probé con:
jQuery(document).ready(function ($) { console.log(php_vars.phoneEmpty) console.log(php_vars.phoneFormat) });
Y en ambos escenarios, php_vars no está definido. El script se está cargando bien, también otro código en este script funciona como debería.
La versión dinámica en enqueue_script es la versión que se usa en todas las páginas cuando hacemos cambios
La función wp_add_inline_script
debe llamarse dentro del wp_print_scripts
. muévalo a la función wpdocs_theme_name_scripts
.
function wpdocs_theme_name_scripts()
{
if (!is_checkout()) {
return;
}
wp_enqueue_script('script-to-pass', get_stylesheet_directory_uri() . '/assets/js/chkt-script.js', ['jquery'], $GLOBALS['dynamic_version'], '');
$chktValStrings = array(
'phoneEmpty' => __('Phone empty', 'flatsome'),
'phoneFormat' => __('Phone format', 'flatsome'),
);
wp_add_inline_script('script-to-pass', 'var php_vars = ' . wp_json_encode($chktValStrings), 'before');
//this also should work
//wp_localize_script( 'script-to-pass', 'php_vars', $chktValStrings);
}
add_action('wp_print_scripts', 'wpdocs_theme_name_scripts');