Wordpress列出该类别的作者

时间:2013-01-13 00:14:11

标签: wordpress wordpress-plugin wordpress-theming

如何列出某个类别的作者?

例如:

CAT NAME: INTERNET     AUTHOR: JOHN, DOE, ALEX
CAT NAME: TECH         AUTHOR: JOHN
CAT NAME: CODE         AUTHOR: ALEX

知道如何在Wordpress中执行此操作吗?

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

<?php
$cat_arr = get_categories(); // Get the list of Categories
foreach ($cat_arr as $cat_obj) {
    $term_id = $cat_obj->term_id;

    // Print the Name
    ?>
    <br>
    CAT NAME: <?php echo $cat_obj->name ?>, AUTHOR: 
    <?php
    // Get all Posts of that Category
    $posts = get_posts(array('category'=>$term_id));

    $authors_arr = array();
    foreach ($posts as $post_obj) {
        $author_id = $post_obj->post_author;

            // In depends on where you put this code, the include of the file is required
        if (!function_exists('get_userdata')) {
            include '<your WP folder>/wp-includes/pluggable.php';
        }

        $user_obj = get_userdata($author_id);
            // Only Add the author is isn't already added, to avoid printed twice
        if (!in_array($user_obj->user_login, $authors_arr)) {
            $authors_arr[] = $user_obj->user_login; // Instead of user_login you can use any Database field of the "Users" table
        }
    }
    echo implode(', ', $authors_arr) . '<br>';
}
?>

但是如果你想为“当前”类别(不适用于所有类别)执行此操作,则可以使用以下代码:

    $cat_obj = get_the_category(); // This is what you put in your comment to get Current Category

    $term_id = $cat_obj->term_id;

    // Print the Name
    ?>
    <br>
    CAT NAME: <?php echo $cat_obj->name ?>, AUTHOR: 
    <?php
    // Get all Posts of that Category
    $posts = get_posts(array('category'=>$term_id));

    $authors_arr = array();
    foreach ($posts as $post_obj) {
        $author_id = $post_obj->post_author;

            // In depends on where you put this code, the include of the file is required
        if (!function_exists('get_userdata')) {
            include '<your WP folder>/wp-includes/pluggable.php';
        }

        $user_obj = get_userdata($author_id);
            // Only Add the author is isn't already added, to avoid printed twice
        if (!in_array($user_obj->user_login, $authors_arr)) {
            $authors_arr[] = $user_obj->user_login; // Instead of user_login you can use any Database field of the "Users" table
        }
    }
    echo implode(', ', $authors_arr) . '<br>';