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 - 自定义缩略图和默认后备图像占位符

wordpress 缩略图后裁剪问题。这甚至可能吗?

如何在 wordpress 中以编程方式显示自定义帖子类型的图像缩略图。?

将图像覆盖添加到特定类别的缩略图 - wordpress

PHP 将特色图像缩略图添加到WordPress管理列

Wordpress 媒体缩略图/固定链接