get_posts-通过作者ID获取所有帖子


11

我想按特定作者ID(当前用户)获取所有帖子。稍后,我要选择该用户(ASC)发表的第一篇文章。我猜我在get_posts中使用的参数不正确,是吗?$ current_user_posts始终包含一个数组,其中所有博客帖子均位于多个不同的WP_Post对象中。

global $current_user;
get_currentuserinfo();                      

$args = array(
    'author'        =>  $current_user->ID, // I could also use $user_ID, right?
    'orderby'       =>  'post_date',
    'order'         =>  'ASC' 
    );

// get his posts 'ASC'
$current_user_posts = get_posts( $args );

1
从版本4.5.0开始不推荐使用get_currentuserinfo()。替换为:$current_user = wp_get_current_user();
Christian Lescuyer

Answers:


19

我有点困惑。如果要从posts数组中获取一个元素,则可以这样获取:

  • reset($ current_user_posts)-第一篇文章
  • 结束($ current_user_posts)-后期发布

但是,如果您只想发送一个帖子,则get_posts()可以使用posts_per_page参数来限制结果。

$args = array(
    'author'        =>  $current_user->ID,
    'orderby'       =>  'post_date',
    'order'         =>  'ASC',
    'posts_per_page' => 1
    );

您可以在WP Query Class Reference页面上获取有关参数的更多信息(get_posts()采用与WP Query相同的参数)。


1
您的$ args工作正常,但我没有得到您的第一个答案。如何使用$ current_user_posts。可以展示给我吗?
kindo

如果要打印第一篇文章的标题,请使用:echo $current_user_posts[0]['title']。“标题”是您从阵列中获得所需内容的关键。您可以使用的完整密钥列表print_r(array_keys($current_user_posts))。“如何使用”取决于您要使用它的方式。
MarinBînzari2013年

得到作者的第一篇文章的ID
kindo

您可以通过以下方式获取ID:$ current_user_posts [0] ['ID']
MarinBînzari2013年

@kindo,有帮助吗?这是您需要的答案吗?
MarinBînzari2013年

6
global $current_user;                     

$args = array(
  'author'        =>  $current_user->ID, 
  'orderby'       =>  'post_date',
  'order'         =>  'ASC',
  'posts_per_page' => -1 // no limit
);


$current_user_posts = get_posts( $args );
$total = count($current_user_posts);

并循环当前用户的帖子


除了发布代码之外,您还能解释上述代码的作用吗,这将有所帮助,谢谢
bravokeyl

1

其工作由(wp4.9.7)

 $user_id = get_current_user_id();
 $args=array(
 'post_type' => 'POSTTYPE',
 'post_status' => 'publish',
 'posts_per_page' => 1,
 'author' => $user_id
  );

$current_user_posts = get_posts( $args );
$total = count($current_user_posts);
wp_die( '<pre>' .  $total . '</pre>' );
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.