如果不存在占位符图像,是否可以全局地将其替换为_post_thump_url?

时间:2018-04-04 作者:APAD1

我正在为一个网站设计一个新主题,但大多数帖子都没有特色图片集。在整个新主题中,我使用the_post_thumbnail_url. 我想知道是否有一个函数可以添加到functions.php 如果没有为帖子指定特征图像,则使用占位符图像的url全局覆盖此url。

2 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

如果您知道占位符图像的URL,那么您一定可以做到。

get_the_post_thumbnail_url() 函数调用wp_get_attachment_image_url() 函数,该函数依次调用wp_get_attachment_image_src() 函数获取帖子缩略图的源。wp_get_attachment_url() 从返回结果wp_get_attachment_image_src 滤器因此,如果没有图像且大小为“后期缩略图”,我们可以使用该过滤器修改结果。

namespace StackExchange\\WordPress;

function image_src( $image, $attachment_id, $size, $icon ) {
  $default = [
    \'https://example.com/img.gif\',
  ];
  return ( false === $image && \'post-thumbnail\' === $size ) ? $default : $image;
}
\\add_filter( \'wp_get_attachment_image_src\', __NAMESPACE__ . \'\\image_src\', 10, 4 );

SO网友:Samuel Asor

嗯,根据您定义的缩略图,您可以检查帖子是否有缩略图,并显示它;但如果没有,则可以显示存储在主题图像目录中某个位置的默认图像,如下所示:

// Other code to fetch the post
if ( has_post_thumbnail() ) {
    the_post_thumbnail(\'slide\');
}
else {
    <img src="<?php echo get_template_directory_uri() ?>/images/default-image.jpg" class="attachment-slide wp-post-image">
}
这是假设您已经添加了缩略图slide 像这样:

add_image_size( \'slide\', 500, 400, true ); // width=500, height=400
希望这有帮助。

结束

相关推荐