仅查询带有特色图片的帖子


15

我想查询6个帖子,但只查询那些附有精选图片的帖子。我正在这样使用meta_key方法WP_Query

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

其次是

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

这似乎不起作用。该查询将返回6条以上的帖子,以及没有特色图片的帖子。有什么想法我在这里错了吗?

@chip:var_dump($query);给出了很大的结果,所以我将其发布到了pastebin中


2
该代码段符合我的预期。错误可能出在代码的另一部分。
Ralf912年

你从那里得到var_dump( $query )什么?
Chip Bennett

我想到的另一件事-使用wordpress导出器/导入器将帖子从实时站点导入到本地服务器。原始帖子都带有精选图片,这些图片显然在导入过程中丢失了。这是否意味着即使删除了特色图像,元键仍然保留,导致查询混乱?
哈里格2013年

运行导入时,是否选中了要下载并附加所有附件/媒体的框?如果您不这样做,那么您的精选图片将无法工作。帖子将带有精选图片,但它将引用不存在的附件,因此将永远不会显示
Tom J Nowell

是的,我在导入时选中了该框。
哈里格

Answers:


3

运行导入程序时,必须选中此复选框以下载和导入所有媒体/附件。

如果您不这样做,则帖子仍将具有精选图像集,但是它们引用的附件将无效,并且任何呼叫尝试均the_post_thumbnail将失败。使用您的代码,您只会得到帖子标题,而没有缩略图。这会给人留下没有特色图片的帖子的印象。情况并非如此,因为它们具有特色图片,只是由于导入时出错而无法使用。

删除您的帖子,然后使用正确的设置重新导入。

同样为了说明这一点,您没有尝试实际检查帖子,请始终检查例如:

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

如果您未选中此复选框,则将获得表示其具有特色图像的图像,但未显示任何图像


1
我怀疑这是我提供的答案无法按预期工作的原因。在WordPress的自杀插件删除所有内容非常有益的。
helgatheviking

我肯定检查了那个盒子。但是根据我的经验,它从来没有为我工作过。所有图像都链接回外部站点。我使用了Import External Images(wordpress.org/extend/plugins/import-external-images)插件在本地存储图像并附加。
哈里格

我有同样的想法,我肯定选中了该框,为什么它仍然无法正常工作?我已经从客户那里得到了它,很容易出错,因此删除您的帖子,重新导入并确保已选中它,如果仍然无法使用,则可以排除它。否则,尼尔·​​戴格拉斯·泰森(Neil DeGrasse Tyson)谈及人类记忆的可悲程度如何。现在,我可能会要求您取消选中第二个复选框,您可能还记得也看到了(但没有一个)
Tom J Nowell

同时,the_post_thumbnailhas_thumbnail电话换行并添加其他情况,以便您明确知道该帖子没有特色图片
Tom J Nowell

另外,请确保您的服务器能够访问远程服务器。如果您的服务器无法获取远程请求,它将无法导入。您可能需要删除已经抓取的媒体附件
Tom J Nowell

24

从WordPress 3.5开始,元查询参数支持EXISTSNOT EXISTS作为比较运算符。如果您使用的是这些,则可以省略value元查询的一部分。尝试使用以下参数进行查询:

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);

谢谢你的建议。我现在得到了6个帖子,但仍然收到没有缩略图的帖子。
哈里格2013年

我对此进行了测试,它为我工作。但是我确实注意到它会返回具有元集的实体,但是由于某种原因附件ID不正确。因此,请仔细检查您的帖子是否设置了特色图片。否则,我不知道还有什么问题。
helgatheviking

哈里格,您可以确认您使用的是v3.5或更高版本吗?
Tom J Nowell

是的,我正在运行WordPress的最新版本-刚作为网络(多站点)安装程序安装在本地开发服务器上。
哈里格

2
仅提供了一些其他信息:存在一个未解决的错误,请参阅trac票证23268,如果使用,则必须使用一个值NOT EXISTS
Nicolai 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.