演示插件-固定大小
这里有一个建议作为演示插件(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!
}
这里我们将拇指大小从
\'thumbnail\'
到
\'large\'
.
首先,我们覆盖播放列表短代码回调,以便更好地确定过滤器的范围,并仅针对播放列表短代码。
然后,我们将image_downsize
根据我们的需要进行筛选,以调用image_downsize()
具有所需拇指大小的函数。但我们必须记住立即删除过滤器回调,以避免无限递归循环。
演示插件-各种大小,但如果我们可以将拇指大小写为短代码属性,则会更加灵活:
[playlist ids="12,34,56" _size="large"]
[playlist ids="12,34,56" _size="medium"]
我们在这里加前缀
_size
属性,以防将来core支持它。
下面是对我们的第一个演示插件的修改,以支持这一点(以紧凑的形式):
<?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
在此,我们将允许的大小限制为
get_intermediate_image_sizes()
.
希望您可以进一步测试这一点,并根据您的需要进行调整!