在作者页面上为每个作者使用特定类别

时间:2014-10-29 作者:user3170966

此时将开始生成authorpage,并显示作者发表的每一篇文章。但是,我只想显示特定类别(id=1)的帖子。

所以基本上,当你访问

我的网站。com/作者/约翰

您应该只看到来自John的帖子,类别ID=1及以上

我的网站。com/作者/Bob

您应该只看到来自Bob的帖子,类别ID=1。

当我在存档中执行此操作时。php:

/* Start the Loop */ 
query_posts(\'cat=1\');                               
while (have_posts()) {
    the_post();
    get_template_part(\'content\', get_post_format());
}
不幸的是,当我这样做时,类别1中的每一篇文章都会显示在每个作者页面上。。。(你可以在约翰的作者页面上看到鲍勃和约翰的帖子)。

我也尝试过这个,但结果与上面相同:

$curauth = get_userdata($row->ID);
$user_link = get_author_posts_url($curauth->ID);
$posts = get_posts(array(
     \'author\' => $curauth->ID,
     \'cat\' => 1
     \'posts_per_page\' => -1,
    )
);
$post_count = count($posts);
我有两个问题。

我应该在存档中编码吗。php或者我应该在author中进行调整。php(主题中不可用)。

更重要的是,我该如何表现catID=1 对于每个作者?

PS:查看完整代码here

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我写了一篇关于类似主题的博文,你可以读到here. 也要花点时间阅读所有链接的帖子。

在那里,我已经解释了为什么你不应该使用query_posts 以及为什么不应使用自定义查询代替主查询

这里有几件事:

记住创建child theme, 不要对尚未编写的主题进行更改。如果你更新这个主题,你会失去所有的工作

创建自己的作者存档页非常容易。只需复制index.php 并将其重命名author.php. 就这么简单

使用pre_get_posts 更改您的作者页。不要直接通过作者页上的自定义查询进行更改。您可以在函数中使用以下内容。php

function wpse166864_include_category( $query ) {
    if ( !is_admin() && $query->is_author() && $query->is_main_query() ) {
       $query->set( \'cat\', \'1\' );
    }
}
add_action( \'pre_get_posts\', \'wpse166864_include_category\' );

结束

相关推荐

Show Pages in Categories

通过将此代码添加到函数中,我创建了category函数。php:function page_category() { register_taxonomy_for_object_type(\'category\', \'page\'); } // Add to the admin_init hook of your theme functions.php file add_action( \'init\', \'page_category\' ); 但问