我制作了一个名为“产品”的自定义帖子类型和一个名为“product_categories”的自定义分类。
这些类别具有以下结构:
第1类
第2类
所以我只在每个类别的最后一个子类别级别上有产品。
我想要实现的目标是:
1)我有一个页面,其中显示所有主要类别:类别1,类别2,类别3
2)例如,当我转到第3类时,我想要显示所有子类别和产品等级。
你能帮帮我吗?我搜索了超过2天的解决方案,但无法使其正常工作......这是我能得到的最接近的:
$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>';
}
}
此解决方案显示所有类别,不仅显示CURRENT类别子类,也不显示第三级子类别(类别3.1.1)
非常感谢!