Ändern der Playlist-Shortcode-Miniaturansichten?

Ich verwende do_shortcode() , um eine benutzerdefinierte WordPress-Audiowiedergabeliste anzuzeigen. Standardmäßig lädt die Wiedergabeliste Cover-Art für jede Audiodatei (das ausgewählte Bild des Anhangs) und ändert sich entsprechend dem aktuellen Titel. Die Sache ist, lädt standardmäßig das 150px x 150px Thumbnail, aber ich möchte eine größere Größe laden. Es scheint keine einfache Möglichkeit zu geben, die Größe zu ändern. Hier ist der Code, mit dem ich arbeite:

 do_shortcode( '' ); 

Ich habe versucht, die Thumbnail-Größe in function.php zu set_post_thumbnail_size() indem set_post_thumbnail_size() und Miniaturbilder neu set_post_thumbnail_size() , aber nichts änderte.

Ich habe auch den WordPress-core durchsucht und festgestellt, dass die function, die den Playlist- wp_playlist_shortcode() steuert, wp_playlist_shortcode() . Es gibt ein bisschen Code, der die Größe des Thumbnails einstellt. Ich habe es bearbeitet, nur um zu sehen, was passiert ist, und es ist das einzige, was bisher funktioniert hat. Offensichtlich ist das nicht der richtige Weg, aber das ist der Punkt, an dem ich momentan feststecke. Ich bin mir nicht sicher, ob ich das hier auch wegcasting sollte, ich würde mich über Hinweise und Hilfe freuen, die ich bekommen kann.

Solutions Collecting From Web of "Ändern der Playlist-Shortcode-Miniaturansichten?"

Demo-Plugin – Feste Größe

Hier ist ein Vorschlag als Demo-Plugin (PHP 5.4+):

 < ?php /* Plugin Name: Custom Playlist Thumb Size */ namespace WPSE238646\PlaylistThumbSize; add_shortcode( 'playlist', function( $atts = [], $content = '' ) { add_filter( 'wp_get_attachment_image_src', __NAMESPACE__ . '\\src' , 10, 3 ); $out = wp_playlist_shortcode( $atts, $content ); remove_filter( 'wp_get_attachment_image_src', __NAMESPACE__ . '\\src' ); return $out; } ); function src( $image, $id, $size ) { add_filter( 'image_downsize', __NAMESPACE__ . '\\size', 10, 3 ); return $image; } function size( $downsize, $id, $size ) { remove_filter( current_filter(), __FUNCTION__ ); if( 'thumbnail' !== $size ) return $downsize; return image_downsize( $id, $size = 'large' ); // <-- Adjust size here! } 

Hier ändern wir die Daumengröße von 'thumbnail' zu 'large' .

Zuerst überschreiben wir den Playlist-Shortcode-Callback, um unsere Filter besser einzugrenzen und nur die Playlist-Shortcodes anzusprechen.

Dann image_downsize wir den image_downsize Filter an unsere Bedürfnisse an, um die image_downsize() function mit der gewünschten Daumengröße image_downsize() . Aber wir müssen daran denken, unseren Filter-Callback sofort zu entfernen, um eine unendliche rekursive Schleife zu vermeiden.

Demo Plugin - Verschiedene Größen

Aber es wäre flexibler, wenn wir die Daumengröße als Shortcode-Attribut schreiben könnten:

 [playlist ids="12,34,56" _size="large"] [playlist ids="12,34,56" _size="medium"] 

Hier setzen wir unser Attribut _size mit einem Unterstrich _size , für den Fall, dass es in Zukunft von core unterstützt wird.

Hier ist eine Modifikation unseres ersten Demo-Plugins, um dies (in einer kompakten Form) zu unterstützen:

 < ?php /* Plugin Name: Playlist With _size Attribute */ namespace WPSE238646\PlaylistThumbSize; add_shortcode( 'playlist', [ (new Playlist), 'shortcode' ] ); class Playlist { protected $_size; public function shortcode( $atts = [], $content = '' ) { $allowed_sizes = (array) get_intermediate_image_sizes(); // <-- Allowed sizes $this->_size = 'thumbnail'; // < -- Default size if( ! empty( $atts['_size' ] ) && in_array( $atts['_size' ], $allowed_sizes ) ) $this->_size = $atts['_size' ]; add_filter( 'wp_get_attachment_image_src', [ $this, 'src' ] , 10, 3 ); $out = wp_playlist_shortcode( $atts, $content ); // < -- Native playlist remove_filter( 'wp_get_attachment_image_src', [ $this, 'src' ] ); return $out; } public function src( $image, $id, $size ) { add_filter( 'image_downsize', [ $this, 'size' ], 10, 3 ); return $image; } public function size( $downsize, $id, $size ) { remove_filter( current_filter(), [ $this, 'size' ] ); if( 'thumbnail' !== $size ) return $downsize; return image_downsize( $id, $this->_size ); // < --Apply new size } } // end class 

Hier beschränken wir die zulässigen Größen auf get_intermediate_image_sizes() .

Hoffentlich können Sie das weiter testen und sich an Ihre Bedürfnisse anpassen!