获得在类别中有帖子的作者

时间:2016-03-27 12:10:47

标签: php wordpress categories

我正在使用Barcelona theme,我需要获得已发布特定类别的作者。

在我的author.php模板中,我有:

$barcelona_authors = get_users( array(
    'fields' => 'ID',
    'who'    => 'authors',
    'order'  => 'DESC',
    'orderby'=> 'post_count'
) );

<?php
foreach ( $barcelona_authors as $barcelona_author_id ) { 
  barcelona_author_box( $barcelona_author_id, false );
}
?>

如何找到已发布到类别ID 59的作者?

例如,我试过:

$barcelona_authors = get_posts('category=59');

但是我收到了错误。有什么帮助吗?

ERROR:

  

注意:类WP_Post的对象无法转换为int in   第296行/home/wp-includes/author-template.php

2 个答案:

答案 0 :(得分:0)

您的get_posts( 'category=59' )代码应该有效。我在我的一个测试wordpress安装上测试了以下内容并且它可以工作(当然使用不同的类别ID)。如果您在get_posts来电期间收到错误,则需要向我们显示错误。

<?php

    $category_posts = get_posts( 'category=59' );
    $authors_ids = array();
    $authors = array();

    foreach( $category_posts as $cat_post ) {
        $authors_ids[] = $cat_post->post_author;
    }

    // Not sure if you need more data than just the ID so here is what you need
    // to get other fields.

    foreach( $authors_ids as $id ) {
        $user = get_user_data( $id );
        // Display name: $user->display_name;
        // Nice name: $user->user_nicename;
        // etc...
    }

?>

答案 1 :(得分:0)

这是Barcelona theme的解决方案:

$barcelona_posts = get_posts('cat=59');
$barcelona_author_ids = array();

foreach ( $barcelona_posts as $k => $v ) {
    if ( ! in_array( $v->post_author, $barcelona_author_ids ) ) {
        $barcelona_author_ids[] = $v->post_author;
    }
}

$barcelona_authors = get_users( array(
    'fields' => 'ID',
    'who'    => 'authors',
    'order'  => 'DESC',
    'orderby'=> 'post_count',
    'include' => $barcelona_author_ids
) );