[英]Wordpress category filter doesn't filter on sub categories
我有多个子类别,例如
自定义帖子类型。
我想达到的目标是在我的自定义类别模板上:
所有子类别的列表(链接),以及每个类别包含的自定义帖子数量。
<div class="category">
<h3>Category:</h3>
<?php
$args = array(
'post_type' => 'books',
'orderby' => '_swauteur',
'order' => 'ASC',
'parent' => '513'
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<div class="cat"><h2><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "have a look at %s" ), $category->name ) . '" ' . '>'
. $category->name.'</a></h2><br /><p>Books: '. $category->count.' </p></div> ';
}
?>
</div>
这很吸引人,我得到了包含帖子的所有类别!
然后在循环中,来自4个子类别的所有帖子
<div class="box">
<div class="post-alt blog">
<ul class="article-list article-list--related">
<?php $books = new WP_Query( $args ); while ( $books->have_posts() ) : $books->the_post();?>
<li class="article-list_item tile post-tile">
<article class="article-list_article">
<section class="article">
<div class="article_thumb"><?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail');} else { echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/placeholder.png" />';}?></div>
<div class="article_title"><h1><?php the_title(); ?></h1>
<p>Auteur: <?php echo get_post_meta($id, "_swauteur", true); ?></p>
<p class="article_pub-date">Publicatie datum:<?php echo date('d-m-Y', strtotime(get_post_meta($id, "_pubdatum",true)));?></p>
</div>
<div class="article_excerpt">
<p class="article_excerpt_content"><?php the_excerpt(); ?></p>
<p><a title="<?php _e('Read More'); ?>" href="<?php the_permalink() ?>" rel="bookmark">Lees meer</a></p>
</div>
</section>
</article>
</li>
</ul>
<?php endwhile; ?>
</div><!--/post-alt blog-->
<div class="navigation">
<div class="alignleft"><?php next_posts_link(__('« Previous Entries')) ?> </div>
<div class="alignright"><?php previous_posts_link(__('Next Entries »')) ?></div>
</div>
</div> <!--closebox-->
</div><!--/col1-->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
这也有效,我收到了所有类别的所有帖子!
但是这是我的问题:
我不知道如何将两者结合起来,因为当我单击子项1的类别链接时,未进行选择,我仍然会从其他子类别中获得所有帖子。
您必须使用约束参数执行几个不同的WP_Query,才能仅获取所需的帖子。 如果您希望将它们限制为一个子类别,则必须执行多个循环。
您可能需要为这些类别页面制作模板,并在其中放置自定义的循环,或者最好避免重复代码,您可以制作一个category.php模板,在其中检查全局$query
以确定要$query
哪个子类别,在生成循环之前设置正确的$args
。
更新 :
使用自定义查询时,WP返回由自定义查询$ args指定的帖子。 在正常情况下,WP根据所显示的URL和该URL的查询参数获取$args
。 如果单击子类别链接,则会发现它在URL中指定了类别。 由于您运行自己的查询,因此WP会忽略您所在的页面。 嗯,它并没有真正忽略它,但是它把它的循环放到了全局变量$query
而您正在显示$books
的循环。
因此,我们必须做同样的事情。 找出用户要问的类别,然后将其添加到您的图书查询中:
'cat' => get_query_var( 'cat' )
函数get_query_var完全可以帮助您。 如果考虑到uri及其参数,您可以获得WP可能使用的任何值。 为简便起见,您可以立即在$args
数组中插入以上行。
您可以在$ args中添加'taxonomy' => 'category-declared-into-cpt',
来获得CPT 'taxonomy' => 'category-declared-into-cpt',
。
您必须添加已声明创建CPT的分类法。
使用wp_reset_query()重置您的查询; 并销毁您的查询代码。因此,您的代码如下: wp_reset_query(); while(have_posts()):// bla bla endwhile;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.