ebody: syntax error, unexpected ':', expecting ')' - wp_enqueue_style

Hallo,

für Wordpress habe ich in einer Plugin Datei folgenden Code:

add_action('wp_enqueue_scripts','add_scripts');
    function add_scripts(){
        wp_enqueue_style( $handle:'sym_style', plugins_url( $path:'css/template.css', $plugin:__FILE__ ));
        wp_enqueue_script( $handle:'sym_script', plugins_url( $path:'js/js.js', $plugin:__FILE__ ));
    }

Und erhalte den Fehler:

syntax error, unexpected ':', expecting ')'

Aber dennoch finde ich den Fehler nicht. $handel, $path habe ich testweise mal weggelassen und nur den Wert stehen lassen.

= statt : probiert. Das irritiert mich eh, dass in der Referenz = angegeben wird, aber in Videos und die Wordpress Extension in VS Code : verwendet. Ist beides richtig?

handel statt $handle

Wo ist der Fehler?

Gruß ebody

  1. Man muss doch ein = und kein : verwenden.

    wp_enqueue_style( $handle='sym_style',...);
    
    1. Hallo,

      Man muss doch ein = und kein : verwenden.

      wp_enqueue_style( $handle='sym_style',...);
      

      nein, Unsinn. Das funktioniert zwar, aber eher zufällig.

      Ergänzung: Das erzeugt eine neue lokale Variable $handle und weist ihr den Wert 'sym_style' zu. Das Ergebnis der Zuweisung, also der zugewiesene Wert selbst, wird dann als Parameter an die Funktion übergeben, die eben angelegte lokale Variable $handle unbenutzt weggeworfen.

      Live long and pros healthy,
       Martin

      --
      Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
  2. Hi,

    für Wordpress habe ich in einer Plugin Datei folgenden Code:

    wo kommt dieser Code her? Von dir?

    add_action('wp_enqueue_scripts','add_scripts');
        function add_scripts(){
            wp_enqueue_style( $handle:'sym_style', plugins_url( $path:'css/template.css', $plugin:__FILE__ ));
            wp_enqueue_script( $handle:'sym_script', plugins_url( $path:'js/js.js', $plugin:__FILE__ ));
        }
    

    Ich habe keine Ahnung von Wordpress, aber das ist zumindest kein syntaktisch korrektes PHP.
    Wie kommst du auf diese phantasievolle Notation? Ich verstehe noch nicht, was du damit erreichen willst.

    Und erhalte den Fehler:

    syntax error, unexpected ':', expecting ')'

    Ja klar. Nach einem Ausdruck in einem Funktionsaufruf kommt eine schließende Klammer (oder ein Komma und ein weiterer Bezeichner, wenn die Funktion mehrere Argumente hat). Aber nicht ein Doppelpunkt gefolgt von einem Stringausdruck.

    Aber dennoch finde ich den Fehler nicht. $handel, $path habe ich testweise mal weggelassen und nur den Wert stehen lassen.

    Ach so, du meinst, beim Funktionsaufruf den Namen der formalen Parameter aus der Funktion selbst nochmal nennen zu müssen? Nein, das gab's noch nie. Nur den Parameterwert!

    = statt : probiert. Das irritiert mich eh, dass in der Referenz = angegeben wird

    Nein. Da steht weder das eine noch das andere. Da steht einfach $handle als formaler Parameter, und zwar als String. Was du eventuell meinst, ist string $src = '' im Funktionskopf. Das bedeutet, dass $src in der Funktion einen Leerstring als Defaultwert hat, falls dieser Parameter beim Aufruf nicht angegeben wird.

    aber in Videos und die Wordpress Extension in VS Code : verwendet.

    Wo? Zeigen, bitte.

    Ist beides richtig?

    Nein, ist beides falsch.

    Live long and pros healthy,
     Martin

    --
    Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
    1. Hallo Martin,

      Wie kommst du auf diese phantasievolle Notation? Ich verstehe noch nicht, was du damit erreichen willst.

      Ich würde mal darauf tippen dass das ein Versuch ist benannte Parameter (ab PHP 8) einzusetzen – allerdings ist da zu viel Geld im Spiel (Parameternamen müssen ohne Dollar da stehen) und für den zweiten Parameter der wp_enqueue_*-Funktionen fehlt der Parametername.

      Gruß,
      Tobias

    2. Wie kommst du auf diese phantasievolle Notation?

      In dieser Reihenfolge:

      1. Ich sehe den Code https://youtu.be/DVJkMCoQcdg?t=344

      2. In VS Code erzeugt die Wordpress Extension diesen Code, wenn ich wp_enqueue_script eintippe:

      wp_enqueue_script( $handle:string, $src:string, $deps:array, $ver:string|boolean|null, $in_footer:boolean )

      1. Ich verstehe es so, dass man $handle:'sym_style' verwenden kann/muss.

      Ich verstehe noch nicht, was du damit erreichen willst.

      CSS und JS Datei in das Template einfügen.

      Ach so, du meinst, beim Funktionsaufruf den Namen der formalen Parameter aus der Funktion selbst nochmal nennen zu müssen? Nein, das gab's noch nie. Nur den Parameterwert!

      Ich habe anstatt wp_enqueue_style( $handle:'sym_style',...) wp_enqueue_style( 'sym_style',) probiert.

      Wo? Zeigen, bitte.

      Hier: https://youtu.be/DVJkMCoQcdg?t=344

      Gruß ebody

      1. Hi,

        Wie kommst du auf diese phantasievolle Notation?

        In dieser Reihenfolge:

        1. Ich sehe den Code https://youtu.be/DVJkMCoQcdg?t=344

        2. In VS Code erzeugt die Wordpress Extension diesen Code, wenn ich wp_enqueue_script eintippe:

        wp_enqueue_script( $handle:string, $src:string, $deps:array, $ver:string|boolean|null, $in_footer:boolean )

        och nööö! Das ist doch bloß die Deklaration der Funktion als Hilfestellung! Von einem Wordpress-Nutzer, der selbst Plugins baut (oder bearbeitet), darf man doch erwarten, dass er oder sie die PHP-Syntax kennt.

        1. Ich verstehe es so, dass man $handle:'sym_style' verwenden kann/muss.

        Das ist falsch. Es heißt nur: Hier ist ein Parameter für $handle anzugeben, und er muss vom Typ string sein.

        Ach so, du meinst, beim Funktionsaufruf den Namen der formalen Parameter aus der Funktion selbst nochmal nennen zu müssen? Nein, das gab's noch nie. Nur den Parameterwert!

        Ich habe anstatt wp_enqueue_style( $handle:'sym_style',...) wp_enqueue_style( 'sym_style',) probiert.

        Fast richtig. Nur da, wo ein Komma steht, muss auch ein weiterer Parameter folgen. Oder lass auch das Komma weg. Antäuschen und dann nicht liefern geht nicht.

        Wo? Zeigen, bitte.

        Hier: https://youtu.be/DVJkMCoQcdg?t=344

        Mööp. Ich wollte Text sehen, kein Video.

        Live long and pros healthy,
         Martin

        --
        Wer respektiert werden will, sollte zunächst damit anfangen, andere zu respektieren.
      2. Tach!

        1. In VS Code erzeugt die Wordpress Extension diesen Code, wenn ich wp_enqueue_script eintippe:

        Welche? Es gibt nicht nur eine.

        wp_enqueue_script( $handle:string, $src:string, $deps:array, $ver:string|boolean|null, $in_footer:boolean )

        Das sieht mir nach Syntaxhilfe aus. Das zeigt die (internen) Namen der Parameter und deren Typ an. Du musst da nach wie vor nur Werte oder Ausdrücke notieren, so wie es in PHP üblich ist.

        1. Ich verstehe es so, dass man $handle:'sym_style' verwenden kann/muss.

        Ganz falsch verstanden. Es gibt zwar Named Arguments in PHP 8, aber die funktionieren nur ähnlich.

        Hier: https://youtu.be/DVJkMCoQcdg?t=344

        Beachte auch den dortigen Kommentar unterm Video. Der Autor arbeitet mit PhpStorm, was eine ähnliche Hilfestellung hat. PhpStorm zeigt Parameternamen mitten im Code an, aber tatsächlicher Code ist das nicht.

        dedlfix.

        1. Vielen Dank für eure Infos. Wieder was dazu gelernt.

          Dieser Code funktioniert und sollte jetzt auch kein Zufall mehr sein:

              add_action('wp_enqueue_scripts','add_scripts');
              function add_scripts(){
                  wp_enqueue_style( 'sym_style', plugins_url( 'css/template.css', __FILE__ ));
                  wp_enqueue_script( 'sym_script', plugins_url( 'js/js.js', __FILE__ ));
              }
          

          Welche? Es gibt nicht nur eine.

          "WordPress Snippets" von wpdevtools.io

          Ich wollte Text sehen, kein Video.

          wp_enqueue_script( $handle:string, $src:string, $deps:array, $ver:string|boolean|null, $in_footer:boolean )

          Gruß ebody