lavour image post

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.

  1.  handle:  Nombre del script que maneja los datos que pueden ser adjuntados
  2.  objectName:  Nombre del objeto javascript. pasado directamente, puede ser calificado como una variable jss
  3. array: Los datos mismos, puede ser cualquiera, simple o multidimencional array
  4. 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:

  1. el primer parámetro es el script que obtendrán las variables,
  2. el segundo es la variable principal vacia,
  3. 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.