如何获取给定用户为其撰写博客文章的所有类别的列表?

时间:2019-06-13 作者:Matthew Brown aka Lord Matt

我需要检索给定用户发布帖子的所有类别的名称。如果我还可以为该用户获取该猫的存档URL,这将使我非常高兴。

如何获取给定用户为其撰写博客帖子的所有类别的列表(以及该用户特定于cat的存档的URL)?

到目前为止,我得到了什么:

根据我所学到的,我猜测:

  $args=array();
  $args[\'taxonomy\']=\'categories\';
  $args[\'hide_empty\']=TRUE;
  $args[\'???\']=$user_id;
  $list = get_terms( $args );
maybe

  $cats = get_categories( \'hide_empty=0\' . \'???\' );
一个,两个,或者两者都不是我所需要的。谁能帮我越过终点线吗?

2 个回复
SO网友:BlueSuiter

正如我对WordPress所知,我们必须找到实现这一目标的方法。

First: 你必须检索作者写的所有帖子,然后才能获取分配给这些帖子的类别。将它们唯一地存储在一个数组中。

$args = array(\'author\' => $author->ID, \'posts_per_page\' => -1, \'fields\' => \'ids\');
$authorArticles = get_posts($args);
$postList = array();
foreach($authorArticles as $key => $article){
    if(!in_array($article, $postList)){
        $postList[$key] = $article;
    }
}
$termsList = array();
$siteURL = site_url(\'/category/\');
foreach($postList as $article){
    $terms = get_the_terms($article, \'category\');
    foreach($terms as $term){
        if(!isset($termsList[$term->term_id])){
            $termsList[$term->term_id] = [\'term_id\' => $term->term_id, \'term_url\' => $siteURL.$term->slug];
        }           
    }
}
echo \'<pre>\', print_r($termsList), \'</pre>\';
Second: 正如@Jacob所建议的,您必须使用SQL来检索类别列表。

顺致敬意,

SO网友:Ted Stresen-Reuter

您不需要SQL(但它会更直接,也更难维护…)。

我知道你在寻找两件事:

由一个用户获取所有类别的帖子(由first answer,IMHO回答)

  • 按作者筛选类别存档(此处回答)
    • WordPress类别的乐趣之一是,您可以(几乎)在WP_Query 通过URL输入。因此,要按用户ID 1查看类别ID 3的帖子列表,URL应为https://example.com/?cat=3&author=1. 类似地,您可以在代码中模拟这一点,但在查询帖子时需要使用分类查询,而不是类别(我知道,这听起来很奇怪,但事实就是这样)。

      See this for a really detailed list of ways to query WordPress