Php 显示当前类别和子类别中的所有帖子
我创建了一个名为“product”的自定义帖子类型和一个名为“product\u categories”的自定义分类法 这些类别具有以下结构:Php 显示当前类别和子类别中的所有帖子,php,wordpress,Php,Wordpress,我创建了一个名为“product”的自定义帖子类型和一个名为“product\u categories”的自定义分类法 这些类别具有以下结构: 第一类 产品1 产品2 第2类 类别2.1 产品3 产品4 产品5 类别2.2 产品6 产品7 第3类 类别3.1 类别3.1.1 产品8 产品9 因此,我只拥有每个类别最后一个子类别级别的产品 我想要实现的是: 1) 我有一个显示所有主要类别的页面:类别1、类别2、类别3 2) 例如,当我转到类别3时,我想用products
- 产品1
- 产品2
- 类别2.1
- 产品3
- 产品4
- 产品5
- 类别2.2
- 产品6
- 产品7
- 类别3.1
- 类别3.1.1
- 产品8
- 产品9
- 类别3.1.1
$args=array(
'post_type' => 'product',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 0,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'product_categories',
'pad_counts' => false,
'depth' => 1
);
$categories=get_categories($args);
foreach ( $categories as $category ) {
if ( $category->parent > 0 ) {
continue;
}
echo '<h1 style="font-weight:bold">' . $category->name . '</h1>';
$querystr = "SELECT $wpdb->posts.*
FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->terms
WHERE term_id = (" . $category->cat_ID . ")
AND term_taxonomy_id = (" . $category->term_taxonomy_id . ")
AND ID = object_id
AND post_type = 'product'
AND post_status = 'publish'
ORDER BY post_date DESC";
$posts = $wpdb->get_results($querystr, OBJECT);
echo '<ul>';
foreach ( $posts as $post ) {
setup_postdata($post);
echo '<li>'; the_title(); echo '</li>';
}
echo '</ul>';
$categories2 = get_terms('product_categories',array('parent' => $category->term_id , 'hide_empty'=> '0', 'hierarchical' => 1, 'depth' => 5 ));
foreach ( $categories2 as $category ) {
echo '<h2>' . $category->name . '</h2>';
$posts = get_posts( array( 'product_categories' => $category->name, 'post_type' => 'product' ) );
echo '<ul>';
foreach($posts as $post) {
setup_postdata($post);
echo '<li>'; the_title(); echo '</li>';
}
echo '</ul>';
}
}
$args=array(
“post_类型”=>“产品”,
'child_of'=>0,
'父'=>'',
'orderby'=>'name',
“订单”=>“ASC”,
“hide_empty”=>0,
“层次结构”=>1,
'排除'=>'',
'包括'=>'',
'编号'=>'',
“分类法”=>“产品类别”,
“pad_counts”=>false,
“深度”=>1
);
$categories=get_categories($args);
foreach($categories作为$category){
如果($category->parent>0){
继续;
}
回显“.$category->name.”;
$querystr=“选择$wpdb->posts*
从$wpdb->posts,$wpdb->term\u关系,$wpdb->terms
其中,术语_id=(“$category->cat_id.”)
和term_taxonomy_id=(“$category->term_taxonomy_id.”)
AND ID=对象_ID
和post_类型=‘产品’
和post_status='publish'
邮购日期说明”;
$posts=$wpdb->get_结果($querystr,OBJECT);
回声“”;
foreach($posts作为$post){
设置_postdata($post);
回音“- ”;标题();回音“
”;
}
回声“
”;
$categories2=get_terms('product_categories',array('parent'=>$category->term_id',hide_empty'=>0','hierarchy'=>1',depth'=>5));
foreach($categories2作为$category){
回显“.$category->name.”;
$posts=get_posts(数组('product_categories'=>$category->name,'post_type'=>product');
回声“”;
foreach(员额为$员额){
设置_postdata($post);
回音“- ”;标题();回音“
”;
}
回声“
”;
}
}
此解决方案显示所有类别,不仅显示当前类别子类别,而且不显示第三级子类别(类别3.1.1)
非常感谢 我编辑了上面的问题,包括代码。谢谢“孩子”是关键,不是吗?您将其设置为=“0”,它必须与当前类别的ID相同,并且应该满足您的要求。没有经过测试,但是已经过测试。我该怎么做?要获取$args中当前类别的id?