Problem mit extract () mit benutzerdefiniertem Shortcode

Ich versuche, ein Bild mit diesem Shortcode hinzuzufügen:

add_shortcode('img_portfolio', 'add_img_portfolio'); function add_img_portfolio($atts){ shortcode_atts(array( 'url' => 'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg', 'height' => 'auto' ), $atts); extract($atts); return ''; } 

Und diesen Fehler bekommen:

 Warning: extract() expects parameter 1 to be array, string given 

Zu wissen, dass das gleiche functionsmuster in einem anderen Shortcode funktioniert, den ich gemacht habe.

Vielen Dank

Solutions Collecting From Web of "Problem mit extract () mit benutzerdefiniertem Shortcode"

Wenn für den $atts keine Attribute verwendet werden, ist $atts eine Zeichenkette, Sie können also keinen extract . Ein Teil Ihres Problems besteht darin, dass Sie shortcode_atts nicht korrekt verwenden. Sie müssen den Wert von shortcode_atts zurück zu $atts . Das stellt sicher, dass $atts ein Array mit allen richtigen Schlüsseln ist.

 add_shortcode('img_portfolio', 'add_img_portfolio'); function add_img_portfolio($atts){ $atts = shortcode_atts(array( 'url' => 'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg', 'height' => 'auto' ), $atts); extract($atts); return ''; } 

Aber ehrlich gesagt, benutze extract() , es ist eine schlechte Übung, weil dein Code mit einer Reihe von Variablen endet, die scheinbar nirgendwo zugewiesen sind. Verwenden $atts einfach $atts als Array:

 function add_img_portfolio($atts){ $atts = shortcode_atts(array( 'url' => 'https://s3.amazonaws.com/popco/images/services/starter-page/img-placeholder.jpg', 'height' => 'auto' ), $atts); return ''; }