创建一个菜单,在wordpress中复制我的自定义分类层次结构

时间:2013-06-24 02:04:33

标签: wordpress wordpress-theming custom-taxonomy

我有一个自定义帖子类型(“产品”),其中包含相关的自定义分类(“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 个答案:

答案 0 :(得分:1)

在搜索了一段时间之后,我决定最好付钱给别人解决这个问题,在这里我找到了解决方案&#34; http://www.wpquestions.com/question/show/id/8543&#34;。

感谢&#34; Hariprasad&#34;为解决方案。

<?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>';

?>