Shortcode für eine Reihe von Hochformat-Bilddateien, ausgenommen eine Reihe?

Ich bin mir nicht sicher, ob Shortcodes dazu in der Lage sind und ich nicht herausfinden konnte, wie ich das alleine machen könnte. Ist das überhaupt möglich?

Ich habe eine Reihe von Bildern in mehreren Ordnern außerhalb von WP. Sie sind Screencaps verschiedener TV-Episoden, einschließlich der Werbespots. Ich möchte jedoch nicht, dass die Screencaps der Werbespots angezeigt werden. Wäre es möglich, einen Shortcode zu erstellen, der so funktioniert ?:

[episode num="1" images="1-100, 110-200, 230-300" title="Pilot"] 

Das würde den HTML- Pilot wie Pilot ausgeben: Pilot für jede Datei von 1 bis 100, dann für jede Datei von 110 bis 200 usw.? Das Verwirrende für mich ist, dass ich nicht herausfinden kann, wie ich es programmieren soll, um eine Reihe von Zahlen zu verwenden und andere auszuschließen.

Vielen Dank!

Solutions Collecting From Web of "Shortcode für eine Reihe von Hochformat-Bilddateien, ausgenommen eine Reihe?"

Sie können das folgende Code-Snippet ausprobieren:

 /** * Shortcode for a series of elevating image files, excluding a range * * @link http://wordpress.stackexchange.com/a/151408/26350 */ add_shortcode( 'episode', 'episode_shortcode' ); function episode_shortcode( $atts = array(), $content = '' ) { //----------------------- // Settings: // $path = '/path/to/files'; $ext = 'jpg'; //----------------------- // Shortcode input: $atts = shortcode_atts( array( 'num' => 0, 'title' => '', 'images' => '' ), $atts, 'episode_shortcode' ); // Sanitize input: $images = esc_attr( $atts['images'] ); $title = esc_attr( $atts['title'] ); $num = (int) $atts['num']; // Init: $html = ''; $ranges = explode( ',', $images ); // Loop over input ranges: foreach( $ranges as $range ) { $rng = explode( '-', $range ); if( count( $rng ) == 2 ) { $from = (int) trim( $rng[0] ); $to = (int) trim( $rng[1] ); foreach( range( $from, $to ) as $i ) { $html .= sprintf( '%s', $path, $num, $i, $ext, $title ); } } } return $html; } 

Es könnte schneller sein für eine sehr große Schleife sprintf() zu überspringen, ich benutze es hier für bessere Lesbarkeit.