{"id":304,"date":"2017-03-07T08:59:07","date_gmt":"2017-03-07T07:59:07","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=304"},"modified":"2017-03-07T08:59:07","modified_gmt":"2017-03-07T07:59:07","slug":"mit-nem-kleinen-dreh-shortcodes-mit-parameter","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/03\/07\/mit-nem-kleinen-dreh-shortcodes-mit-parameter\/","title":{"rendered":"Mit &#8217;nem kleinen Dreh: Shortcodes mit Parameter"},"content":{"rendered":"<p>Shortcodes sind eine praktische Sache, wie wir gesehen haben, es lassen sich alle m\u00f6glichen PHP-Funktionen sauber hineinpacken und an nahezu beliebiger Stelle ausgeben. Jetzt w\u00e4rs aber doch auch schick, wenn man der Funktion auch noch bestimmte Werte mitgeben k\u00f6nnte, und der alte Programmierer nickt sofort und sagt: au ja, Parameter!<\/p>\n<h2>Parameter\u00fcbergabe an Shortcodes<\/h2>\n<p>Ich nehm mir nochmal meinen Hallo-Evi-Shortcode her, und m\u00f6chte jetzt den Namen als Parameter \u00fcbergeben, so da\u00df die Funktion dann &#8222;Hallo liebe xyz&#8220; ausgibt. Im Shortcode-Aufruf sieht das so aus:<\/p>\n<p>[mhs name = &#8222;Evi Silvia&#8220;]<\/p>\n<p>Die eckigen Klammern weisen WordPress an, nach einer passenden Funktion zu suchen, das <strong>mhs<\/strong> ist der Shortcode der Funktion, die wir in der <strong>functions.php<\/strong> definiert haben. <strong>name<\/strong> ist der Bezeichner unseres Parameters, und der <strong>Wert<\/strong> des Parameters wird mit = zugewiesen. Parameter sind in WordPress-Shortcodes immer Strings, deswegen in G\u00e4sef\u00fc\u00dfchen &#8222;Evi Silvia&#8220;.<\/p>\n<p>Damit unsere Funktion jetzt den Parameter auch entgegennimmt, m\u00fcssen wir den Funktionskopf \u00e4ndern, das sieht jetzt so aus:<\/p>\n<pre>function mein_hallo_shortcode($param)<\/pre>\n<p>Dabei ist $param ein beliebiger PHP-Variablenname. Wer hat hier gesagt: <strong>echo &#8222;Hallo liebe $param&#8220;<\/strong>?<br \/>\nNicht ganz, wenn man es so macht, kommt n\u00e4mlich Folgendes heraus:<\/p>\n<p><strong>Hallo liebe Array<\/strong><\/p>\n<h2>Parameter als Array<\/h2>\n<p>Die Parameter des Shortcodes werden n\u00e4mlich als Array \u00fcbergeben. Dabei bildet jede Zeile ein Wertepaar aus Bezeichner und Wert ab. In unserem Fall ist das nur eine Zeile, weil wir ja nur einen Parameter ausgeben. Um jetzt an den Wert des Parameters heranzukommen, mu\u00df man das Array auslesen, und das geht so:<\/p>\n<p>function mein_hallo_shortcode($param) {<\/p>\n<p>$aktName =\u00a0 $param[&#8217;name&#8216;];<br \/>\necho &#8222;&lt;h1&gt;Hallo liebe &#8222;.$aktName.&#8220;&lt;\/h1&gt;&#8220;;<br \/>\n}<\/p>\n<p>Das <strong>$param[&#8217;name&#8216;]<\/strong> liest den Wert (&#8222;Evi Silvia&#8220;) zum Bezeichner <strong>name<\/strong> aus. Auch nicht so schlimm, man mu\u00df es nur wissen. Der Vorteil bei dieser Methode ist, da\u00df man beim Aufruf eines Shortcodes eine ganze Latte von Parametern mitgeben kann und \u00fcber die Bezeichner freien Zugriff darauf hat, die Reihenfolge der Parameter ist dabei prinzipiell egal.<\/p>\n<h2>Mehrere Parameter \u00fcbergeben<\/h2>\n<p>Der Funktionsaufruf s\u00e4he dann z.B. so aus:<\/p>\n<p>[mhs vorname = &#8222;Evi&#8220; nachname = &#8222;Leu&#8220;]<\/p>\n<p>Ensprechend wird die Funktion angepa\u00dft:<\/p>\n<pre>$aktVorname =\u00a0 $param['vorname'];\r\n$aktNachname =\u00a0 $param['nachname'];\r\n\r\n\r\necho \"Hallo liebe\".$aktVorname.\" \".$aktNachname;<\/pre>\n<p>Ausgabe: <strong>Hallo liebe Evi Leu<\/strong><\/p>\n<p>Alles klar? Wenn man wei\u00df wie, ist die Parameter\u00fcbergabe eine n\u00fctzliche und flexible Angelegenheit.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Shortcodes sind eine praktische Sache, wie wir gesehen haben, es lassen sich alle m\u00f6glichen PHP-Funktionen sauber hineinpacken und an nahezu beliebiger Stelle ausgeben. Jetzt w\u00e4rs aber doch auch schick, wenn man der Funktion auch noch bestimmte Werte mitgeben k\u00f6nnte, und der alte Programmierer nickt sofort und sagt: au ja, Parameter! Parameter\u00fcbergabe an Shortcodes Ich nehm [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,14,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/304"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=304"}],"version-history":[{"count":1,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/304\/revisions"}],"predecessor-version":[{"id":305,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/304\/revisions\/305"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}