Aktualisieren Sie den Datenparameter eines lokalisierten Skripts in WordPress

Lesezeit: 2 Minuten

Benutzer-Avatar
Naourass Derouichi

Ich arbeite an einem untergeordneten Thema, In my-page-template.php Ich habe :

$id_curr= 5; //calculated value through code
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_curr)); 

Im my_js.js Ich habe einen AJAX-Aufruf:

$.ajax({
   //...
   type: 'post',
   data: {
      action: 'ajax_load',
      post_id: ajaxload.post_id
   }
})

Jetzt in functions.phpich möchte bearbeiten/aktualisieren ajaxload.post_id nach einem neuen Ergebnis. Gibt es eine Möglichkeit, das zu tun? Wenn ich versuche, erneut anzurufen wp_localize_script() mit dem gleichen $name Wie unten gezeigt, wird das funktionieren?

$id_new= 8; //new calculated value
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_new));  

  • Wie würden Sie den Wert von bestimmen $id_new?

    – Paul Stanley

    24. Oktober 2015 um 14:59 Uhr


  • @Octopi In der Funktion, die ich über AJAX aufrufe (befindet sich in functions.php), mache ich a $_POST, $id_new ist ajaxload.post_id + $n, $n ist, wie oft die Bedingung einer While-Schleife wahr war.

    – Naourass Derouichi

    24. Oktober 2015 um 15:49 Uhr


  • Kannst du bitte die Funktion posten?

    – Paul Stanley

    24. Oktober 2015 um 15:50 Uhr

  • Die Frage, die ich gestellt habe, ist eigentlich eine sehr vereinfachte Version meines Problems, die Funktion ist sehr lang, ich habe versucht, sie zu vereinfachen, aber sie ist immer noch zu lang und muss beides weitgehend erweitern my-page-template.php und my_js.js Teile. Was ich versuche, ist das Zurücksenden einer Antwort mit Daten vom PHP-Handler nach einer erfolgreichen AJAX-Anfrage.

    – Naourass Derouichi

    24. Oktober 2015 um 16:08 Uhr


  • Ich denke, Ihr Ansatz kann hier falsch sein. localize script ist eigentlich dazu gedacht, Konstanten zu speichern. Ich denke, Sie sollten diesen Wert besser in einem HTML-Datenattribut speichern und bei Bedarf aktualisieren.

    – Chris

    27. Oktober 2015 um 1:44 Uhr

Nach eingehender Recherche wage ich es, meine Frage zu beantworten.

WordPress hat die Funktion wp_send_json() das erlaubt, eine Antwort auf eine AJAX-Anfrage zurückzusenden. Diese Funktion kann aktualisiert werden ajaxload.post_id.

Im functions.php :

$return = array('post_id' => $id_new);
wp_send_json($return);

Im 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;
   }
});

  • Was ist, wenn man eine WordPress-Schleife in Ajax zurückgibt und zusätzlich eine Aktualisierung eines lokalisierten Datenparameters benötigt?

    – GDT

    17. Januar 2017 um 11:57 Uhr

Erstellen Sie ein Array mit IDs.

$ids = array( 5, 8 );
foreach ( $ids as $id ) {
    wp_localize_script('my_js', 'ajaxload', array('post_id' => $id));
}

  • Ich muss den Wert der Variablen ändern, da sie mehrmals in verschiedenen Dateien verarbeitet wird. Selbst wenn es sich um ein Array handelt, muss ich ihre Werte dynamisch ändern.

    – Naourass Derouichi

    21. Oktober 2015 um 2:05 Uhr

1385130cookie-checkAktualisieren Sie den Datenparameter eines lokalisierten Skripts in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy