La solución de wordpress para pasar variables desde php a archivos de tipo Javascript con la función de localize script como un conocimiento inevitable
Pasar variables desde php a javascript es una de las compatibilidades que deberían ya estar solventadas, pero al ser dos lenguajes diferentes pero que al mismo tiempo comparten espacio en tantos websites y siendo wordpress un CMS que usa tanto javascript como php, es cuando por supuesto debe existir una solución a esta falta de comunicación entre estos dos lenguajes.
Esto porque php se ejecuta del lado del servidor y Javascript se ejecuta del lado del cliente.
Lo primero es decir que esta función solo va! si el script ha sido previamente añadido. Este acepta un array asociativo y crea un objeto de javascript.
- handle: Nombre del script que maneja los datos que pueden ser adjuntados
- objectName: Nombre del objeto javascript. pasado directamente, puede ser calificado como una variable jss
- array: Los datos mismos, puede ser cualquiera, simple o multidimencional array
- Resultado: si el script ha sido localizado true o false
El código el la documentación sería el siguiente:
functiontheme_enqueue_scripts() {
/**
* frontend ajax requests.
*/
wp_enqueue_script( 'frontend-ajax', JS_DIR_URI . 'frontend-ajax.js', array('jquery'), null, true );
wp_localize_script( 'frontend-ajax', 'frontend_ajax_object',
array(
'ajaxurl'=> admin_url( 'admin-ajax.php'),
'data_var_1'=> 'value 1',
'data_var_2'=> 'value 2',
)
);
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_scripts');
En resumen:
- el primer parámetro es el script que obtendrán las variables,
- el segundo es la variable principal vacia,
- el tercero es el array con estas variables pasadas tipo objeto/valor entonces la variable obtendra el resultado concatenando con punto para obtener estos valores
Para obtener el valor de esta variable en el archivo javascript lo hariamos llamando a frontend_ajax_object.ajaxurl para acceder al archivo admin-ajax.php y frontend_ajax_object.data_var_1 resulta como valor value_1.