Nehmen wir an, ein Benutzer nutzt im Editor einen Shortcode mit mehreren Attributen:
[mm_current_date_time date_format="d.m.Y" time_format="G:i"]
Ihre Funktion könnte so aussehen:
Funktioniert wunderbar. Zumindest so lange bis der Benutzer immer brav beide Attribute angibt. Was allerdings, wenn er nur einen oder keinen davon angibt?
[mm_current_date_time time_format="G:i"]
PHP wird Ihnen eine Error-Nachricht anzeigen:
PHP Notice: Undefined index: date_format in /www/wp-content/plugins/mm-plugin/mm-plugin.php on line X
Das liegt daran, dass der Schlüssel date_format
im Array des Parameters $atts
nicht existiert. Das wiederum hat zur Folge, dass Sie alle einzelnen Parameter auf ihre Existenz überprüfen müssten:
Das ist nötig aber auch lästig. Denn die Schreibarbeit wird länger, je mehr Parameter Sie zulassen. Aus diesem Grund hat WordPress die Funktion shortcode_atts()
eingeführt:
<?php
function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
...
}
?>
Es gilt:
Beispiel (die isset()
-Anweisungen entfallen komplett):
Ein Aufruf wie
[mm_current_date_time time_format="G:i"]
erzeugt nun keinen PHP-Fehler mehr. Stattdessen wird der Standardwert des Zeitformats eingesetzt.