我是否可以防止Get_the_Post_Thumb回退到全局帖子ID?

时间:2017-01-06 作者:rpeg

我有一个包含元框的帖子类型。这些元框允许用户从下拉菜单中选择项目。所有这些项目都是其他帖子的ID。

所以在主题中,我使用get_the_post_thumbnail 从这些元数据库中检索的帖子ID中检索特色图像。它起作用了。

不起作用的是,如果元盒是空的,get_the_post_thumbnail 将自动检索全局帖子ID的缩略图。

这是codex的第一个参数:

Post ID或WP\\U Post对象。默认值为全局$post。默认值:null

我如何防止这种情况发生,或者有什么其他方法可以解决这种情况?我不想从默认帖子加载图像。如果未选择任何特定项,我希望它为空。

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

当您将帖子ID存储在另一篇帖子的元字段中(我们将此帖子称为“主帖子”)时,您可以获取该元字段,如果该字段为空,只需避免使用get_the_post_thumbnail().

(对于下一个示例,我假设您在主帖子的一个元字段中输入一个帖子ID;如果不是这样,只需说出并解释您使用的数据格式即可)。

例如,如果您在主帖子的循环中:

while( have_posts() ) {
    the_post();

    // used inside the loop, get_the_ID() returns current post ID in the loop
    // replace meta_field_that_stores_post_ID with the key of your meta field
    // last param is set to true, so get_post_meta() retuns empty string if the meta field doesn\'t exists
    $thumb_post_ID = get_post_meta( get_the_ID(), \'meta_field_that_stores_post_ID\', true );
    if( ! empty( $thumb_post_ID ) ) {
        echo get_the_post_thumbnail( $thumb_post_ID );
    }

}
您可以将该逻辑与模板分离,例如使用模板标记:

function cyb_get_the_post_thumbnail() {

    $thumb_post_ID = get_post_meta( get_the_ID(), \'meta_field_that_stores_post_ID\', true );

    if( ! empty( $thumb_post_ID ) {
        echo get_the_post_thumbnail( $thumb_post_ID );
    }
}
然后使用cyb_get_the_post_thumbnail() 只要你需要它在主帖子的循环中。

如果您不在主帖子的循环中,则至少需要知道主帖子的ID,并执行以下操作:

$thumb_post_ID = get_post_meta( 254, \'meta_field_that_stores_post_ID\', true );
if( ! empty( $thumb_post_ID ) {
    echo get_the_post_thumbnail( $thumb_post_ID );
}

相关推荐