此时将开始生成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
最合适的回答,由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\' );