我如何只显示一位作者的类别?

时间:2016-11-24 09:54:55

标签: wordpress tags custom-post-type categories

我有一个网站,其中有多个页面供作者(每个人都有自己的作者管理员帐户和ID)。在他们的页面中,我显示他们的最新提交(自定义帖子类型)。

我想在左侧显示他们提交的类别,但我不确定如何显示类别,同时让它们仅与特定作者相关。例如,我希望它显示为列表:

  • 书籍(2)
  • 短篇小说(12)

每个类别旁边的数字将是特定作者发布的提交数量。点击它将显示该类别中的提交。

这些类别非常静态,并且在作者之间共享,但是让它仅与当前打开的作者页面相关联是很困难的。有谁可以帮我这个?

这就是我所拥有的:

<?php

/*
 Plugin Name: Shagun Category Display
 */

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

define('WP_PLUGIN_URL', plugin_dir_url(__FILE__));
define('SHAGUN_WIDGET_FOLDER', '/shagun-shortcodes/');
define('SHAGUN_WIDGET_URL', WP_PLUGIN_URL . '/shagun-shortcodes');


function Category_display($atts) {

    ob_start();    
    extract(shortcode_atts(array(
        'author' => ''
    ), $atts ));


    $args = array(
        'post_type' =>  'case_study'
    );

    $categories = get_categories($args);

    echo '<ul>';

    foreach ($categories as $category) {
        $url = get_term_link($category);
        ?>
        <li><a href="<?php echo $url;?>"><?php echo $category->name; ?></a></li>

        <?php
    }

    echo '<li> end of list </li></ul>';


    wp_reset_postdata();
    return ob_get_clean();   
};


add_shortcode('Category_display', 'Category_display');
?>

1 个答案:

答案 0 :(得分:0)

基本上,您必须对每个类别进行查询,以检查作者为该类别发布的帖子数量。

foreach ($categories as $category) {
    $url = get_term_link($category);

    $args = [
        'cat' => $category->term_id,
        'author' => $atts['author'],
        'post_type' => 'case_study',
    ];
    $q = new WP_Query($args);
    ?>

    <li><a href="<?php echo $url;?>"><?php echo $category->name; ?> (<?php echo $q->found_posts; ?>)</a></li>

    <?php
}

如果您只想显示作者发布内容的类别,您也可以通过在$q = [...]下添加此行来轻松完成此操作:

if ($q->found_posts < 1) continue;

这是未经测试的,因此可能存在一些拼写错误。