我有多个子类别,例如
使用自定义帖子类型。
我想要覆盖的是我的自定义类别模板:
所有子类别的列表(链接)以及每个类别包含的自定义帖子的数量。
<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的类别链接时,没有选择,我仍然可以获得其他子类别的所有帖子。
答案 0 :(得分:1)
你必须使用约束参数做几个不同的WP_Query,才能获得你想要的那些帖子。如果您希望将它们限制为一个子类别,则必须执行多个循环。
您可能必须为这些类别页面制作模板并将自定义循环放在那里,或者更好地避免重复代码,您可以创建category.php模板,在其中检查全局$query
以确定在生成循环之前,询问了哪个子类别并设置了正确的$args
。
<强>更新强>:
当您使用自定义查询时,WP会返回您的自定义查询$ args指定的帖子。在正常情况下,WP会根据您显示的网址和查询网址的参数获取$args
。如果单击您的子类别链接,您会发现它指定了URL中的类别。由于您运行自己的查询,WP会忽略您所在的页面。好吧,它并没有真正忽略它,但它将它的循环放在全局变量$query
中,而你正在显示$books
的循环。
所以,我们必须做同样的事情。找出用户要求的类别,然后将其添加到您的图书查询中:
'cat' => get_query_var( 'cat' )
功能get_query_var确切地说明了这一点。如果它考虑了uri及其参数,你可以获得WP可能使用的任何值。为简洁起见,您可以立即在$args
数组中注入上述行。
答案 1 :(得分:1)
您可以获取将'taxonomy' => 'category-declared-into-cpt',
添加到$ args的CPT类别。
您必须添加已声明用于创建CPT的分类。
答案 2 :(得分:0)
使用 wp_reset_query(); 重置您的查询并销毁您的查询代码。所以,您的代码如下: wp_reset_query(); while(have_posts()):// bla bla endwhile;