如何使用unctions.php显示张贴缩略图的默认图片?

时间:2020-09-28 作者:Mähnenwolf

如果没有设置,我想显示默认的特色图像。我在google上搜索了一个解决方案,我所能找到的就是这段代码(如下所示)。我的问题是,是否有一种方法可以通过在函数中写入函数来显示默认图像。php?我不想重复代码。

<?php if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else { ?>
<img src="<?php bloginfo(\'template_directory\'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
<?php } ?>

1 个回复
最合适的回答,由SO网友:Rup 整理而成

相关代码位于wp-includes/post-thumbnail-template.php. 缩略图ID作为\\u缩略图\\u ID存储在post元数据中。

你可以

将默认图像上载到WordPress,并将其ID设置为任何没有缩略图的帖子的默认缩略图ID:

function default_post_metadata__thumbnail_id( $value, $object_id, $meta_key,
                                              $single, $meta_type )
{
    if ( \'_thumbnail_id\' == $meta_key )
    {
        $value = 123; // the ID for the default image
    }
    return $value;
}
add_filter( \'default_post_metadata\', \'default_post_metadata__thumbnail_id\', 10, 5 );
这意味着has_post_thumbnail()get_the_post_thumbnail() 现在,即使未配置缩略图,也会为帖子找到缩略图,并且只会在给定ID下正常工作,即找到正确的图像大小并为您生成图像标签等。

然而,我猜在您编辑帖子时,该ID可能会被保存到帖子中,因此您可能只想在以下情况下注册过滤器if (! is_admin() ) {, i、 e.仅在前端站点上。这确实意味着您需要将图像添加到媒体库中,尽管也可能通过使用ID-123和挂钩来伪造图像image_downsize_default_thumbnail 返回-123的图像。

覆盖has_post_thumbnail 筛选以始终返回true,并重写post_thumbnail_html 如果返回空字符串,则使用筛选器填充缺少的HTML。

function default_post_thumbnail_html( $html ) {
    if ( $html == \'\' ) {
        return sprintf("<img src=\\"%s\\" alt=\\"%s\\" />",
            esc_url( bloginfo(\'template_directory\') . \'/images/default-image.jpg\' ),
            esc_url( get_the_title() ) );
    }
    return $html;
}
add_filter( \'post_thumbnail_html\', \'default_post_thumbnail_html\', 10, 1 );
add_filter( \'has_post_thumbnail\', \'__return_true\' );
这样,您必须生成<img> 完全是你自己,但这会让你使用一个没有ID的图像。

相关推荐

Functions.php上未定义$_GET和&_REQUEST索引

我最近尝试学习为我的自定义主题创建一个主题选项页面,这是按照stackoverflow和其他资源的教程进行的。但脚本显示错误if ($_GET[\'page\'] == basename(__FILE__)) { if (\'save\' == $_REQUEST[\'formaction\']) { foreach ($options as $value) { if( isset( $_REQUEST[ $value[\'id\']