我有一个网站,其中有多个页面供作者(每个人都有自己的作者管理员帐户和ID)。在他们的页面中,我显示他们的最新提交(自定义帖子类型)。
我想在左侧显示他们提交的类别,但我不确定如何显示类别,同时让它们仅与特定作者相关。例如,我希望它显示为列表:
每个类别旁边的数字将是特定作者发布的提交数量。点击它将显示该类别中的提交。
这些类别非常静态,并且在作者之间共享,但是让它仅与当前打开的作者页面相关联是很困难的。有谁可以帮我这个?
这就是我所拥有的:
<?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');
?>
答案 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;
这是未经测试的,因此可能存在一些拼写错误。