WordPress后备缩略图图像按大小
Posted
技术标签:
【中文标题】WordPress后备缩略图图像按大小【英文标题】:WordPress Fallback Thumbnail image by size 【发布时间】:2016-09-15 15:47:09 【问题描述】:我有多个自定义缩略图大小。
例如:
<?php
add_image_size( 'sizeOne', 300, 100 );
add_image_size( 'sizeTwo', 600, 200 );
?>
我用功能显示缩略图:
<?php the_post_thumbnail( 'sizeOne' ); ?>
而且,如果图像不存在(如果我没有在管理区域设置自定义缩略图),则备用图像将为default-thumbnail.png
。这个过程是由functions.php
中的这段代码完成的:
<?php
function filter_post_thumbnail_html( $html )
// If there is no post thumbnail,
// Return a default image
if ( '' == $html )
return '<img src="' . get_template_directory_uri() . '/images/default-thumbnail.png" />';
// Else, return the post thumbnail
return $html;
add_filter( 'post_thumbnail_html', 'filter_post_thumbnail_html' );
?>
问题在于所有缩略图尺寸的后备图像都是相同的。因为它是 300x100,所以非常适合 sizeOne
,但对于 sizeTwo
来说太小了。
我如何“检查”请求的缩略图是sizeOne
还是sizeTwo
,然后返回正确的后备图片?
——
Ps:我知道另一种方法,但这不是我想要的。
<?php
if ( has_post_thumbnail() )
the_post_thumbnail( 'sizeOne' );
else
?>
<img src="<?php bloginfo('template_directory'); ?>/images/default-thumbnail.jpg" />
<?php
?>
【问题讨论】:
【参考方案1】:您可以使用filter的附加参数。
<?php
function filter_post_thumbnail_html( $html, $post_id, $post_thumbnail_id, $size )
// If there is no post thumbnail,
// Return a default image
if ( '' == $html )
if ( 'sizeTwo' == $size )
return '<img src="' . get_template_directory_uri() . '/images/default-thumbnail2.png" />';
else
return '<img src="' . get_template_directory_uri() . '/images/default-thumbnail.png" />';
// Else, return the post thumbnail
return $html;
add_filter( 'post_thumbnail_html', 'filter_post_thumbnail_html', 10, 4 );
【讨论】:
没错,Jrod。你能解释一下最后的10, 4
吗?感谢您的宝贵时间。
@Hugo 绝对是。 10 是过滤器应该运行的优先级。 10 是过滤器/操作的默认值。 4 是您的函数将接受的参数数量。这个特定的过滤器传递了 5 个参数,但您不必使用所有参数,在这种情况下,我们只使用其中的 4 个。以上是关于WordPress后备缩略图图像按大小的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce - 自定义缩略图和默认后备图像占位符