如何仅提取WP_QUERY返回的第一个项目的帖子ID?

时间:2019-07-07 作者:Matthew Brown aka Lord Matt

如何仅提取WP\\u查询返回的第一个项目的post ID?我所看到的所有示例、答案和文档都深入到使用循环进行操作中。那很好,但我只想要第一个身份证,其他什么都不要。由于插件只会在没有自定义帖子类型时生成自定义帖子类型,因此用户应该只有一个。我需要那个帖子的ID。

如何查找帖子ID?有没有更简单的方法来确定用户是否有可用的帖子?

就我所知:

$query = new WP_Query( array(
        \'author\'        => $current_user,
        \'post_type\'     => \'my_custom_post_type\',
        // etc.
) );
$author_posts = new WP_Query( $query );
if( $author_posts->have_posts() ) {
    // They have at least one. Grovey, now what?
}
unset($author_posts);

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

如果您只需要自定义帖子类型的单个帖子的ID,就可以查看它是否存在,我建议只使用get_posts() 具有fields 设置为ids:

$post_ids = get_posts(
    [
        \'numberposts\' => 1,
        \'author\'      => $current_user,
        \'post_type\'   => \'my_custom_post_type\',
        \'fields\'      => \'ids\',
    ]
);

if ( isset( $post_ids[0] ) ) {
    $post_id = $post_ids[0];
}
然而,如果您有一个帖子类型,其中每个用户都有一篇帖子,我建议将他们帖子的ID存储为用户meta。那么您就不必为这种查询而烦恼了:

$post_id = get_user_meta( $current_user, \'the_post_type\', true );

SO网友:Faham Shaikh

如果您试图获取用户在自定义帖子类型中撰写的帖子数量,则需要执行以下操作:

$post_type = \'<YOU_CUSTOM_POST_TYPE_SLUG>\';
$user_post_count = count_user_posts( $userid , $post_type );
if ($user_post_count == 0) {
    //Do Something
}

相关推荐

Wp-query and column blocks

也许这要求太高了,但新的块提供了一种简单的方法来添加响应良好的列。ie您只需将图像拇指放入列块中,它们就可以在移动和桌面上完美工作。有没有办法让WP查询输出the_post_thumbnail 如我在3列行中的参数(12篇x类已发布帖子)所述?