Entfernen Sie HTML-Inhalt, wenn Attribut nicht festgelegt ist / Variablenattribute

Also erstelle ich einen Shortcode, der das Standard-Bootstrap-Karussell verwendet.

Es funktioniert völlig in Ordnung, solange alle 3 Folienattribute korrekt eingegeben werden, aber offensichtlich, wenn nur 2 gesetzt sind und das vierte ist, erzeugt es immer noch das dritte Div für die Folie, aber es tritt einfach nicht in das Bild src url ein und erzeugt daher ein Leerzeichen rutschen. Die Sache ist jedes Mal, wenn es verwendet wird, wird es eine andere Anzahl von Dias haben und ich möchte, dass es funktioniert, wenn nur 2 Bild-URLs übergeben werden oder 4.

functionen:

// Add Shortcode for single portfolio slider function slider_shortcode( $atts , $content = null ) { // Attributes extract( shortcode_atts( array( 'slide1' => '', 'caption1' => '', 'slide2' => '', 'caption2' => '', 'slide3' => '', 'caption3' => '', ), $atts ) ); // Code return ' 
'; } add_shortcode( 'slider', 'slider_shortcode' );

Kurzcode:

 [slider slide1="/img/img1.png" caption1="" slide2="/img/img2.jpg" caption2="test text 2"][/slider] 

Solutions Collecting From Web of "Entfernen Sie HTML-Inhalt, wenn Attribut nicht festgelegt ist / Variablenattribute"

Ich würde zwei Bilderreihen, Beschriftungen bevorzugen.

Beispielsweise:

Ich habe zum besseren Verständnis Kommentare zum Code hinzugefügt.

 function wpse216239_slider_shortcode( $atts , $content = null ) { // Attributes $atts = shortcode_atts( array( 'slides' => '', // one master attribute for slides 'captions' => '' // one master attribute for captions ), $atts, 'myslidershortcode' ); $slides = explode(';;', $atts['slides']); // slide urls separated by ;; $captions = explode(';;', $atts['captions']); // caption texts separated by ;; if(empty($slides)){ return ''; } $html = ' 
'; } add_shortcode( 'slider', 'wpse216239_slider_shortcode' );

Dieser Code generiert nur Slider HTML, wenn Bilder an den Shortcode übergeben werden. Trenne Bild-URL und Untertitel durch ;;

Implementierung

 [slider slides="http://example.com/image1;;http://example.com/image2" captions="My caption1;;Mycaption2" ] 

Code wird zu Demonstrationszwecken angegeben. Es wird nicht getestet und sollte nicht ohne Tests in eine Produktionsstätte gebracht werden.