繁体   English   中英

WordPress的类别过滤器不过滤子类别

[英]Wordpress category filter doesn't filter on sub categories

我有多个子类别,例如

    • 儿童1
    • 儿童2
    • 儿童3
    • 儿童4

自定义帖子类型。

我想达到的目标是在我的自定义类别模板上:

所有子类别的列表(链接),以及每个类别包含的自定义帖子数量。

<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(__('&laquo; Previous Entries')) ?>   </div>
    <div class="alignright"><?php previous_posts_link(__('Next Entries &raquo;')) ?></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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM