Создать меню, которое копирует мою собственную иерархию таксономии в WordPress
У меня есть пользовательский тип записи ("продукты") со связанной пользовательской таксономией ("product_type"). Поэтому, когда я создаю продукт, я выбираю, к какой категории он относится.
Таксономия является иерархической и выглядит следующим образом:
Category 1
Sub-Category 1.1
Sub-Category 1.2
Sub-Category 1.3
Category 2
Category 3
Sub-Category 3.1
Sub-Category 3.2
etc, etc
То, что я хочу (и не знаю, как это сделать), - это создать меню, которое динамически копирует мои таксономии со связанными с ними продуктами.
Рендеринг HTML должен быть примерно таким:
<ul>
<!--first level-->
<li>
<a href="#">Category 1</a>
<ul>
<!--second level-->
<li>
<a href="#">Sub-category 1.1</a>
<!--third level-->
<ul>
<li><a href="#">product</a></li>
<li><a href="#">product</a></li>
</ul>
</li>
<!--second level-->
<li>
<a href="#">Sub-category 1.2</a>
<!--third level-->
<ul>
<li><a href="#">Product</a></li>
<li><a href="#">Product</a></li>
</ul>
</li>
</ul>
</li>
<!--first level-->
<li class="first-level">
<a href="#">Category 2</a>
<ul>
<!--second level-->
<li><a href="#">Product</a></li>
<!--second level-->
<li><a href="#">Product</a></li>
<!--second level-->
<li><a href="#">Product</a></li>
</ul>
</li>
</ul>
Я знаю HTML, но я не слишком разбираюсь в php.
Кто-нибудь может указать мне правильное направление для достижения этой цели?
Спасибо!
1 ответ
Пройдя некоторое время, я решил, что лучше заплатить кому-нибудь, чтобы это выяснить, и тут я нашел решение " http://www.wpquestions.com/question/show/id/8543".
Спасибо "Харипрасад" за решение.
<?php
$args = array('type'=> 'products','parent'=> 0,'child_of'=>0,'orderby'=> 'id','order'=> 'ASC','hide_empty'=> 0,'taxonomy'=> 'product_type',);
$categories = get_categories( $args );
echo '<ul>';
foreach ( $categories as $category ) {
echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a>';
query_posts(array( 'post_type' => 'products','parent'=> 0,'child_of'=>0,'showposts' => -1,'tax_query' => array(
array('include_children'=>false,
'taxonomy' => 'product_type',
'terms' => $category->term_id,
'field' => 'term_id',
)
),
'orderby' => 'title',
'order' => 'ASC' )
);
if(have_posts())
{
echo '<ul>';
while ( have_posts() ) : the_post();
echo '<li>';
?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php
echo '</li>';
endwhile;
echo '</ul>';
}
wp_reset_query();
$subargs = array('type'=> 'products','child_of'=> $category->term_id,'orderby'=> 'id','order'=> 'ASC','hide_empty'=> 0,'taxonomy'=> 'product_type',);
$subcategories = get_categories( $subargs );
if($subcategories)
{
echo '<ul>';
foreach ( $subcategories as $subcategory ) {
echo '<a href="' . get_category_link( $subcategory->term_id ) . '">' . $subcategory->name . '</a>';
query_posts(array( 'post_type' => 'products','showposts' => -1,'tax_query' => array(
array(
'taxonomy' => 'product_type',
'terms' => $subcategory->term_id,
'field' => 'term_id',
)
),
'orderby' => 'title',
'order' => 'ASC' )
);
while ( have_posts() ) : the_post();
echo '<li>';
?><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php
echo '</li>';
endwhile;
wp_reset_query();
}
echo '</ul>';
}
}
echo '</ul>';
?>