Wie behandelt man wertlose Attribute in Shortcodes?

Einige HTML-Elemente akzeptieren wertlose Attribute wie oder

Wie bearbeite ich diesen Fall mit Shortcodes, bei denen ich die automatische Wiedergabe standardmäßig deaktivieren möchte (= das Attribut überhaupt weglassen), aber optional aktivieren.

Mögliche Szenarien:

 //   

Die standardmäßige Vorgehensweise hilft mir nicht, da ich keinen Standardwert haben möchte :

 // http://codex.wordpress.org/Shortcode_API#Attributes function my_shortcode_handler( $atts, $content = null ) { extract( shortcode_atts( array( 'attr_1' => 'attribute 1 default', 'attr_2' => 'attribute 2 default', // ...etc ), $atts ) ); } 

Ich kann definitiv meinen eigenen Hack um dieses Problem finden, aber ich bin interessiert, wenn es einen schönen Weg gibt, dies zu tun.

Solutions Collecting From Web of "Wie behandelt man wertlose Attribute in Shortcodes?"

Verwenden Sie 0 und 1 als Shortcode-Werte und verwenden Sie diese, um das HTML-Attribut ein- oder auszublenden.

Beispiel mit einer Elementeingabe und dem required Attribut:

 function input_shortcode( $atts ) { $values = shortcode_atts( array ( 'type' => 'text', 'value' => '', 'name' => '', 'id' => '', 'required' => 0, ), $atts ); $values = array_map( 'esc_attr', $values ); return sprintf( '', $values[ 'type' ], // 1 '' === $values[ 'name' ] ? '' : ' ' . $values[ 'name' ], // 2 '' === $values[ 'value' ] ? '' : ' ' . $values[ 'value' ], // 3 '' === $values[ 'id' ] ? '' : ' ' . $values[ 'id' ], // 4 0 === $values[ 'required' ] ? '' : ' required' // 5 ); } 

Bitte benutze keinen extract() . Je.

Namenlose Attribute werden immer noch an den Shortcode-Handler übergeben, sie können einfach nicht mit Namen aufgerufen werden (weil, duh!)

Sie können Attribute mit numerischen Tasten durchlaufen und nach dem Vorhandensein des autoplay Werts autoplay , um die [video autoplay] -Variante zu erhalten.

Siehe ähnliche Frage – Shortcode aber ohne Gleichheitszeichen?