WordPress: PHP-Variable, die in JavaScript null anzeigt

Lesezeit: 2 Minuten

Ich stecke in einer seltsamen Situation fest. Ich versuche, die PHP-Variable in JS von WordPress wp_localize_script zu übergeben und versuche, sie in console.log anzuzeigen, aber es wird null ausgegeben. Hier ist mein Code in der functions.php

$conv = 1.36;
echo $conv;

add_action('wp_enqueue_scripts','cassets');
function cassets(){
  wp_enqueue_script("all-script",get_template_directory_uri().'/all-script.js',array('jquery'),'',true);
  $rate= array(
    'conv' => $conv,
  );
  wp_localize_script( 'all-script', 'rate', $rate);

}

und in all-script.js

var conv = rate.conv;
console.log(conv);

Im Konsolenfenster wird null angezeigt, aber der PHP-Echowert wird richtig angezeigt.

Danke im Voraus.

  • Versuchen Sie, Ihr Javascript einzubinden $(document).ready(function () { // your script here })

    –Tom M

    12. März 2019 um 17:27 Uhr

  • @tom-m Ich habe es versucht, aber es hat nicht funktioniert.

    – Roshan Kumar

    12. März 2019 um 17:30 Uhr


  • @Teemu – Dies ist kein Duplikat dieser Frage. Mit WordPress können Sie ganz einfach PHP-Variablen an JavaScript übergeben wp_localize_script() Funktion. Seine Variablen werden nur außerhalb des Gültigkeitsbereichs verwendet.

    – Xhynk

    12. März 2019 um 17:33 Uhr

  • @Xhynk Ja, ich habe es fast sofort nach dem Schließen gemerkt, jetzt wieder geöffnet.

    – Teemu

    12. März 2019 um 17:34 Uhr

  • $conv ist in Ihrer Funktion nicht definiert.

    – Sysix

    12. März 2019 um 17:36 Uhr

Benutzer-Avatar
Xhynk

Du benutzt deine $conv Variable außerhalb des Gültigkeitsbereichs. Schauen Sie sich an Der Variablenbereich von PHP Dokumentation. Du definierst $conv im globalen Geltungsbereich, aber mit Verweis auf einen lokalen Geltungsbereich $conv in deiner cassets() Funktion.

Sie müssen die Funktion Scoped verwenden $conventweder indem Sie es intern definieren oder es als globale Variable an die Funktion übergeben oder es als übergeben Bezug.

Hier ein paar Beispiele:

Definition im Geltungsbereich:

add_action('wp_enqueue_scripts','cassets');
function cassets(){
    $conv = 1.36;

    wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );

    $rate = array(
        'conv' => $conv,
    );

    wp_localize_script( 'all-script', 'rate', $rate );
}

Als globale Variable an die Funktion übergeben:

$conv = 1.36;

add_action('wp_enqueue_scripts', 'cassets' );
function cassets(){
    global $conv;

    wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );

    $rate = array(
        'conv' => $conv,
    );

    wp_localize_script( 'all-script', 'rate', $rate );
}

Übergeben Sie es über Schließung:

$conv = 1.36;

add_action('wp_enqueue_scripts', function() use($conv){
    wp_enqueue_script( 'all-script', get_template_directory_uri().'/all-script.js', array('jquery'), '', true );

    $rate = array(
        'conv' => $conv,
    );

    wp_localize_script( 'all-script', 'rate', $rate );
});

Dein Problem ist, dass du es definiert hast $conv außerhalb Ihrer Funktion.

Innerhalb Ihrer Funktion $conv was ist undefiniert. (Ich denke, Sie sollten auch eine Warnung von PHP erhalten).

Versuche dies:

add_action('wp_enqueue_scripts','cassets');
function cassets(){
  $conv = 1.36;
  wp_enqueue_script("all-script",get_template_directory_uri().'/all-script.js',array('jquery'),'',true);
  $rate= array(
    'conv' => $conv,
  );
  wp_localize_script( 'all-script', 'rate', $rate);

}

1136450cookie-checkWordPress: PHP-Variable, die in JavaScript null anzeigt

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

Privacy policy