如何显示子分类帖子

时间:2014-05-21 作者:shufflepath

我正在尝试在页面上显示按子分类法分组的项目,如下所示。。。

子分类法1(h2)

第1项第2项

子分类法2(h2)

第3项第4项

我确实成功地获得了分类法的子分类法并获得了它们的帖子,不幸的是,当使用以下代码时,我两次获得了所有父分类法帖子,而不是按照各自的子分类法将它们分组,如。。。

子分类法1(h2)

第1项第2项第3项第4项

子分类法2(h2)

第1项第2项第3项第4项

我有点不知道我的代码到底做错了什么,这些代码使帖子显示在两个组下,而不仅仅是它们所属的子分类法下,如果能给我一个指针,我会非常感激。

<?php
    $termID = 8; // Parent A ID
    $taxonomyName = "product_category";
    $termchildren = get_term_children( $termID, $taxonomyName ); ?>
<?php        
          foreach ($termchildren as $child) {
              $term = get_term_by( \'id\', $child, $taxonomyName );
?>

<h2><?php echo $term->name; ?></h2>             

<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$wp_query = new WP_Query( array(
                        \'post_type\' => \'product\', 
                        \'product_category\' =>$term->name,
                        \'meta_query\' => array(
                            \'relation\' => \'AND\',
                            array(
                                \'key\' => \'product_active\',
                                \'value\' => \'1\'
                            ),
                        ),
                        \'posts_per_page\' => -1,
                        \'orderby\' => \'menu_order\',
                        \'order\' => \'ASC\',
                        \'paged\'=> $paged

                        )); ?>


<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

<?php the_title(); ?> <img src="<?php $image = wp_get_attachment_image_src(get_field(\'product_image\'), \'full\'); ?><?php echo $image[0]; ?>" alt="<?php the_title(); ?>" /><br />
<?php the_content(); ?>


<?php endwhile; 
      wp_reset_query();
?>  


<?php
unset($term);
}
?>  

1 个回复
最合适的回答,由SO网友:aj-adl 整理而成

几件事-

不需要关系。

它只在同一类型查询(meta或tax)的多个之间起作用,它在codex中的custom\\u meta queries下明确表示,不要将其用于单个内部元查询

即使您有2个查询并且被认为是默认查询,您实际上只需要指定或

由于1.5个原因,您查询分类法的方法错误

绝对错误:默认情况下,术语按slug查询时,您使用的是术语的name属性。错误一半:此方法已被折旧,以支持tax\\u查询。其他事项:

您使用的变量应为主查询保留

当您只需重置post数据时,您正在重置查询

不需要按$期限调用Unset。

你真的想要分页吗?从你的解释来看,这听起来不像你,但这很容易改变。。

这里有一些代码和一些更新,让我知道它是如何运行的。

<?php
    $termID = 8; // Parent A ID
    $taxonomyName = "product_category";
    $termchildren = get_term_children( $termID, $taxonomyName );

          foreach ($termchildren as $child) {
              $term = get_term_by( \'id\', $child, $taxonomyName );

echo "<h2>".$term->name."</h2>";             

<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$my_query = new WP_Query( array(
                        \'post_type\' => \'product\', 
                        \'tax_query\' => array(
                            array(
                                \'taxonomy\' => $taxonomyName,
                                \'field\' => \'slug\',
                                \'terms\' => $term->slug
                            )
                        ),
                        \'meta_query\' => array(
                            array(
                                \'key\' => \'product_active\',
                                \'value\' => \'1\'
                            ),
                        ),
                        \'posts_per_page\' => -1,
                        \'orderby\' => \'menu_order\',
                        \'order\' => \'ASC\',
                        \'paged\'=> $paged

                        )); ?>


<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<?php the_title(); ?> <img src="<?php $image = wp_get_attachment_image_src(get_field(\'product_image\'), \'full\'); ?><?php echo $image[0]; ?>" alt="<?php the_title(); ?>" /><br />
<?php the_content();

    endwhile; 
      wp_reset_postdata();
}
?>

结束

相关推荐

Removing a taxonomy term

有一个名为wp\\u remove\\u object\\u terms的Wordpress函数,不幸的是,它似乎不起作用。我试图通过以下方法达到同样的目的 $post_terms = wp_get_object_terms( $post_id, $taxonomy ); if( $post_terms ){ if(($key = array_search($term_id, $po