PHP in Artikel und Seiten einfügen, viel einfacher, als Du glaubst. Eine kurzer und verständlicher Leitfaden zur Erstellung von Shortcodes in WordPress.
Wozu PHP in Artikeln oder Seiten ausführen
Eine Frage, die sich Dir wahrscheinlich nicht stellt, andernfalls wärst Du wohl nicht auf diesen Artikel gestossen. Trotzdem möchte ich Dir an dieser Stelle zwei einfache Beispiele anführen, die wir anschliessend umsetzen.
Datum in Artikel ausgeben
Anders ausgedrückt, wollen wir eine einfache PHP-Funktion, ohne Argumente, ausführen. Dafür öffnen wir mit einem Editor die funtions.php in Deinem Theme. Du findest sie im Verzeichnis Deiner WordPressseite unter wp-conten/themes/dein_child_theme/functions.php
Alternativ kannst Du im Adminverzeichnis unter Design->Editor->functions.php darauf zugreifen. Allerdings solltest Du an dieser Stelle nur Änderungen vornehmen, wenn Du im Notfall einen Zugriff auf Dein Dateisystem hast.
In die functions.php schreiben wir folgenden Code:
function fc_date(){
return date('d-m-Y') ."\n";
}
add_shortcode('thx_date', 'fc_date');
Wir haben eine Funktion fcdate() erstellt. Diese macht nichts anderes, als das Datum im Format Tag, Monat, Jahr zurückzugeben. Der Aufruf
add_shortcode('thx_date', 'fc_date')
erstellt einen Shortcode mit dem Hook thx_date und hängt an diesen die Funktion fc_date an. Nachdem wir die Änderung gespeichert haben, können wir in all unseren Seiten und Artikeln das aktuelle Datum ausgeben.
In die Seite oder den Artikel müssen wir lediglich den gewählten Hook in eckigen Klammern eintragen. Der wird bei Aufruf der Seite durch die angehängte Funktion ersetzt und zeigt so das aktuelle Datum.
[thx_date] liefert 14-09-2024
Escape HTML
Manchmal ist es notwendig, HTML nicht auszuführen, sondern lediglich anzuzeigen. Du kannst das an den unzähligen HTML-Beispielen auf thx.cool sehen. Selbstverständlich führe ich den HTML-Escape nicht manuell durch. Stattdessen rufe ich eine PHP-Funktion auf, die das für mich erledigt.
Wieder gehen wir in die functions.php des Child-Themes und fügen folgenden Code ein:
function fc_esc_html( $atts, $content = null ) {
return esc_html($content);
}
add_shortcode( 'thx_esc_html', 'fc_esc_html' );
Diesmal geht es darum, dass wir unserer Funktion eine Zeichenkette (String) übergeben wollen. Deshalb hat unsere Funktion diesmal Argumente. Die Variable $content enthält nach dem Aufruf den Inhalt unseres Shortcodes. Der Shortcode wird wie zuvor erstellt.
Aufgerufen wird unser erstellter Shortcode so:
[thx_esc_html]<span>Hier wird <strong>HTML</strong> angezeigt, statt ausgeführt!</span>[/thx_esc_html]
Grundsätzlich kannst Du Shortcodes auch Argumente übergeben. Das könnte dann so aussehen:
function fc_esc_color( $atts ) {
$a = shortcode_atts( array (
'esc' => '',
'color' => 0,
), $atts );
if($a['esc'] != '')
if($a['color']!=0)
return '<pre><code>' . esc_html($a['esc']) . '</code></pre>';
return esc_html($a['esc']);
}
add_shortcode( 'thx_esc_upper', 'fc_esc_color' );
In unserer Funktion fc_esc_color parst 'shortcode_atts' das übergebene Array $atts und überträgt es in arry. Anschliessend wird überprüft ob in der ersten Variable etwas steht und ob Farbe gewünscht ist. Wird nichts übergeben, gibt die Funtion einen Leerstring zurück. Der Aufruf:
[thx_esc_color esc='Hier kommt code rein' color=1]
Zusamenfassung
PHP kannst Du in Deinen Beiträgen und Seiten durch die Erstellung von Shortcodes ausführen.
Mit add_shortcode( 'hook', 'call_back_function' ); legst Du in Deiner functions.php einen Shortcode (hook) und übergibst eine Funktion.
In Deiner Funktion stehen Dir drei Parameter zur Verfügung. Du kannst sie alle nutzen oder auch keinen. Im einfachsten Fall nutzt Du keinen Parameter.
function fc_date(){
return date('d-m-Y') ."\n";
}
add_shortcode('thx_date', 'fc_date');
Bei einem Shortcode mit umschliessenden Inhalt nutz Du den Parameter $content:
function fc_esc_html( $atts, $content = null ) {
return esc_html($content);
}
add_shortcode( 'thx_esc_html', 'fc_esc_html' );
Der Parameter $atts liefert Dir ein assoziatives Array oder einen leeren String, wenn keine Attribute im Shortcode angegeben werden.
function fc_esc_color( $atts ) {
$a = shortcode_atts( array (
'esc' => '',
'color' => 0,
), $atts );
if($a['esc'] != '')
if($a['color']!=0)
return '<pre><code>' . esc_html($a['esc']) . '</code></pre>';
return esc_html($a['esc']);
}
add_shortcode( 'thx_esc_upper', 'fc_esc_color' );
Schreibe einen Kommentar