我可以使用自定义域作为特色图像URL吗?

时间:2014-01-15 作者:User

我博客的每篇文章都有一个自定义字段,它是Flickr上照片的URL。如何将其用作特色图像?

请注意,我问这个问题是因为我正在迁移到一个主题,该主题利用特色图像在博客主页上显示缩略图,但我会避免手动输入所有300多篇旧帖子的缩略图。

EDIT:

<我宁愿避免更改主题的代码,以避免在将来的更新过程中出现复杂情况。但我可以使用儿童主题get_post_thumbnail_id() 获取附在帖子上的特色图片的功能:

<?php if ( has_post_thumbnail() ) :
$full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'full\' );
?>
<div class="post-thumbnail-wrapper">
    <a class="swipebox" href="<?php echo $full_image_url[0]; ?>" title="<?php printf( esc_attr__(\'Permalink to image of %s\', \'envirra\'), the_title_attribute(\'echo=0\') ); ?>" rel="bookmark">
        <?php the_post_thumbnail( \'vw_large\' ); ?>
    </a>
</div>

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

编辑模板最简单的解决方案是使用条件显示特色图像:

if has custom field use it, else use Featured Image

您可以使用get_post_meta(), 如果未设置指定的键,则返回空字符串:

$custom_url = get_post_meta( get_the_ID(), \'old_featured_image_custom_field\', true );
您可以使用the_post_thumbnail(), 或者通过has_post_thumbnail().

使用这些,您可以设置条件输出,例如:

<?php
$custom_url = get_post_meta( get_the_ID(), \'old_featured_image_custom_field\', true );

if ( \'\' != $custom_url ) {
    ?>
    <img src="<?php echo $custom_url; ?>" />
    <?php
} else if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}
使用过滤器如果您不能或不想编辑模板,您很幸运:the_post_thumbnail() 呼叫get_the_post_thumbnail(), 包括一个过滤器,post_thumbnail_html:

return apply_filters( \'post_thumbnail_html\', $html, $post_id, $post_thumbnail_id, $size, $attr );
因此,只需使用相同的方法编写过滤器回调:

function wpse129849_filter_the_post_thumbnail( $html, $post_id ) {
    // Try to find custom field value
    $custom_url = get_post_meta( $post_id, \'old_featured_image_custom_field\', true );
    // If it has a value, return it
    if ( \'\' != $custom_url ) {
        return \'<img src="\' . $custom_url . \'" />\';
    } 
    // otherwise, just return the original post thumbnail html
    else {
        return $html;
    }
}
add_filter( \'post_thumbnail_html\', \'wpse129849_filter_the_post_thumbnail\', 10, 2 );

结束

相关推荐