我有一个自定义的帖子类型,“design\\u asset”。
我将它们显示在页面模板上,带有循环
<?php
rewind_posts();
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var(\'paged\') : 1;
$args = array( \'post_type\' => \'design_asset\', \'posts_per_page\' => 100, \'orderby\' => \'title\', \'order\' => \'ASC\' );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div class="col-md-4 col-xs-12">
<div class="thumbnail">
<div class="caption">
<?php the_post_thumbnail( \'thumbnail\', array(\'class\' => \'img-responsive\') ); ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p class="excerpt"><?php the_excerpt(); ?></p>
</div>
</div>
</div>
<?php endwhile; ?>
同样在这一页上,我列出了
wp_list_categories
单击此列表中的类别时,它将转到存档。php并在此处显示类别,thanks to this post\'s reply, e、 g。/category/components/
我不完全理解Wordpress为什么使用archive.php
而不是category.php
, 但现在让我们继续吧。
现在,我正在尝试重新设计这个循环archive.php
. 我把它搬到了loop-assetThumbs.php
并称之为<?php get_template_part(\'loop\', \'assetThumbs\'); ?>
当然,它会调用所有帖子或帖子类型,我不知道如何在URL中只显示“活动”类别,/category/components/
如何修改循环以执行此操作?或者有没有更好的方法通过wp_list_categories
?
注意:我也不知道为什么这里会显示循环的2个空迭代。
最合适的回答,由SO网友:Pieter Goosen 整理而成
我想你的问题就在你提到的代码中。pre_get_post
如果你没有正确使用它,它就是一个混蛋。
使用中使用的任何存档类型条件pre_get_posts
, 它将影响前端和后端。这包括归档页面、类别和分类页面、标记页面和作者页面。你需要做一个检查,确保你只运行pre_get_posts
在前端(使用!is_admin()
).
你需要做的另一件重要事情是跑步pre_get_posts
仅在主查询上。因为pre_get_posts
首先在主查询之前运行,然后WP_Query
并使用修改查询变量,包括主查询和任何自定义查询WP_Query
将受到影响。(使用is_main_query()
)
因此,您需要将有问题的代码修改到此中,以添加!is_admin
检查
function namespace_add_custom_types( $query ) {
if( !is_admin() && $query->is_category() && $query->is_main_query ) {
$query->set( \'post_type\', array(
\'post\', \'your-custom-post-type-here\'
));
}
}
add_filter( \'pre_get_posts\', \'namespace_add_custom_types\' );
我希望这有帮助。如果没有,请告诉我。
EDIT
史蒂夫,在你做出我提议的这些改变之前,先检查一下
my answer 关于你的另一个问题。但请记住这个答案中的要点,以供将来参考。