Naourass Derouichi
Estoy trabajando en un tema infantil, En my-page-template.php
Tengo :
$id_curr= 5; //calculated value through code
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_curr));
En my_js.js
Tengo una llamada AJAX:
$.ajax({
//...
type: 'post',
data: {
action: 'ajax_load',
post_id: ajaxload.post_id
}
})
Ahora en functions.php
quiero editar/actualizar ajaxload.post_id
según un nuevo resultado. ¿Hay una manera de hacer eso? Si trato de volver a llamar wp_localize_script()
con el mismo $name
como se muestra a continuación, ¿funcionará esto?
$id_new= 8; //new calculated value
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_new));
Después de una profunda investigación, me atrevo a responder a mi pregunta.
WordPress tiene la función wp_send_json()
que permite enviar una respuesta a una solicitud de AJAX. Esta función puede actualizar ajaxload.post_id
.
En functions.php
:
$return = array('post_id' => $id_new);
wp_send_json($return);
En my_js.js
:
$.ajax({
type: 'post',
data: {
action: 'ajax_load',
post_id: ajaxload.post_id
},
success:function(data) {
var result = $.parseJSON(data);
ajaxload.post_id = result.post_id;
}
});
-
¿Qué pasa si uno está devolviendo un bucle de wordpress, en ajax, y además requiere una actualización de un parámetro de datos localizado?
– GDT
17 de enero de 2017 a las 11:57
crear una matriz con ID.
$ids = array( 5, 8 );
foreach ( $ids as $id ) {
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id));
}
-
Necesito cambiar el valor de la variable ya que se procesa varias veces en diferentes archivos. Incluso si se trata de una matriz, tendré que cambiar dinámicamente sus valores.
– Naourass Derouichi
21 de octubre de 2015 a las 2:05
¿Cómo decidiría el valor de
$id_new
?– Pablo Stanley
24/10/2015 a las 14:59
@Octopi En la función que llamo a través de AJAX (ubicada en functions.php), hago un
$_POST
,$id_new
esajaxload.post_id + $n
,$n
es cuántas veces la condición de un ciclo while fue verdadera.– Naourass Derouichi
24/10/2015 a las 15:49
¿Puedes publicar la función, por favor?
– Pablo Stanley
24/10/2015 a las 15:50
La pregunta que hice es en realidad una versión muy simplificada de mi problema, la función es muy larga, traté de simplificarla pero aún es demasiado larga y necesita extenderse en gran medida a ambos
my-page-template.php
ymy_js.js
partes. Lo que estoy tratando de hacer es enviar una respuesta con datos del controlador PHP después de una solicitud AJAX exitosa.– Naourass Derouichi
24 de octubre de 2015 a las 16:08
Creo que su enfoque puede estar equivocado aquí. localizar script realmente está destinado a almacenar constantes. Creo que sería mejor almacenar este valor en un atributo de datos html y actualizarlo según sea necesario.
– Chris
27 de octubre de 2015 a las 1:44