我如何才能只显示一位作者的类别?
How may I display only categories from one author?
我有一个网站,其中有多个作者页面(每个作者都有自己的作者管理员帐户和 ID)。在他们的页面中,我显示了他们最新提交的内容(自定义 post 类型)。
我想在左侧显示他们提交的类别,但我不确定如何显示类别,同时让它们仅与特定作者相关。例如,我希望它显示为列表:
- 书籍 (2)
- 短篇小说 (12)
每个类别旁边的数字是特定作者post编辑的提交数量。单击它会显示该类别中的提交。
类别非常静态,并且在作者之间共享,但很难让它仅与当前打开的作者页面相关。谁能帮我解决这个问题?
这是我的:
<?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');
?>
基本上,您必须针对每个类别进行查询,以检查作者为该类别发布了多少帖子。
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;
这是未经测试的,所以可能会有一些错别字。
我有一个网站,其中有多个作者页面(每个作者都有自己的作者管理员帐户和 ID)。在他们的页面中,我显示了他们最新提交的内容(自定义 post 类型)。
我想在左侧显示他们提交的类别,但我不确定如何显示类别,同时让它们仅与特定作者相关。例如,我希望它显示为列表:
- 书籍 (2)
- 短篇小说 (12)
每个类别旁边的数字是特定作者post编辑的提交数量。单击它会显示该类别中的提交。
类别非常静态,并且在作者之间共享,但很难让它仅与当前打开的作者页面相关。谁能帮我解决这个问题?
这是我的:
<?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');
?>
基本上,您必须针对每个类别进行查询,以检查作者为该类别发布了多少帖子。
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;
这是未经测试的,所以可能会有一些错别字。