【问题标题】:Create custom category navigation wordpress创建自定义类别导航 wordpress
【发布时间】:2015-09-15 14:19:25
【问题描述】:

我想在 wordpress 中创建一个自定义类别导航 3 级。 我不想使用 php wp_nav_menu(),因为我需要在导航中添加类别缩略图。 我找到了这段代码:

<?php // Create category navigation with posts for each subcat
    $categories = get_categories();
    $catID = $cat->cat_ID;
    foreach ($categories as $cat) {
        if($cat->category_parent == 0){ //If is a top level category
            $subcategories = get_categories('child_of='. $cat->cat_ID);
            if (count($subcategories)>0){ ?>

                <li class="haschild"><a><?php echo $cat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></span></a>

                <?php } /* end if has subcats */
            else { // else; does not have childen ?>

                <li><a href="<?php echo get_category_link( $cat->cat_ID); ?>"><?php echo $cat->name; ?></a><span class="image"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></span></li>

            <?php } //end else ?>
        <?php // Get the subcats !!! THIS RETURNS ALL DECENDING LEVELS. 
            $subcategories = get_categories('child_of='. $cat->cat_ID);
            if (count($subcategories)>0){
                echo "<ul class='sub-menu'>";
                foreach ($subcategories as $scat) { ?>

                <li><a href="<?php echo get_category_link( $scat->cat_ID); ?>"><?php echo $scat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($scat->term_id); ?>" /></span></a></li>



            <?php
            echo "";
             }
            echo "</ul> </li>"; // Close the Child UL DIV and parent LI
            }   //endif has subcats ?>

        <?php } //end if parent ?>
    <?php } //end foreach ?>

但它不适用于 3 级,仅适用于 2 级。 您可以直接在我的网站上查看菜单:http://www.designsd.fr/ap/

你有改变它的想法吗?

【问题讨论】:

  • 看代码逻辑:它在主循环内部做了一个循环来获取子类别。只需复制有关 subcat 的代码并将其放在 subcat 循环中即可。
  • 是的,我知道我尝试这样做,但我不是开发人员,只是前端。你能帮我写出新循环的正确版本吗?

标签: wordpress navigation categories


【解决方案1】:

这是更新后的代码,带有新的循环级别:

<?php // Create category navigation with posts for each subcat
$categories = get_categories();
$catID = $cat->cat_ID;
foreach ($categories as $cat) {
    if($cat->category_parent == 0){ //If is a top level category
        $subcategories = get_categories('child_of='. $cat->cat_ID);
        if (count($subcategories)>0){ ?>

        <li class="haschild"><a><?php echo $cat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></a></span>

            <?php } /* end if has subcats */
        else { // else; does not have childen ?>

            <li><a href="<?php echo get_category_link( $cat->cat_ID); ?>"><?php echo $cat->name; ?></a><span class="image"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></span></li>

        <?php } //end else ?>
    <?php // Get the subcats !!! THIS RETURNS ALL DECENDING LEVELS. 
        $subcategories = get_categories('child_of='. $cat->cat_ID);
        if (count($subcategories)>0){
            echo "<ul class='sub-menu'>";
            foreach ($subcategories as $scat) {
                $child_subcategories = get_categories('child_of='. $scat->cat_ID);
                if (count($child_subcategories)>0){ ?>
                    <li class="test"><a><?php echo $scat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($scat->term_id); ?>" /></span></a>
                <?php } else { ?>
                    <li><a href="<?php echo get_category_link( $scat->cat_ID); ?>"><?php echo $scat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($scat->term_id); ?>" /></a></span>
                <?php }
                if (count($child_subcategories)>0){
                    echo "<ul class='sub-menu'>";
                    foreach ($child_subcategories as $sscat) { ?>
                        <li><a href="<?php echo get_category_link( $sscat->cat_ID); ?>"><?php echo $sscat->name; ?><span class="image"><img src="<?php echo z_taxonomy_image_url($sscat->term_id); ?>" /></span></a></li>
                    <?php }
                    echo '</ul>';
                }
                ?>
                </li>
                <?php;
             }
            echo "</ul> </li>"; // Close the Child UL DIV and parent LI
        }   //endif has subcats ?>

    <?php } //end if parent ?>
<?php } //end foreach ?>

【讨论】:

  • 非常感谢您的帮助。差不多就是这样。问题仍然存在 - 当您单击具有子菜单的二级链接(更多...)时,此链接具有 href 链接,因此他重新加载页面。 - 链接(存档 1 / 存档 2 和存档 3)不应出现在第 2 级,而应出现在(更多...)的第三级
  • 您要避免链接到当前正在显示的类别,还是取消链接所有有子类别的类别?
  • 取消链接所有有子类别的类别
  • 差不多了,现在最后一个问题是Links(archive 1 / archive 2 and archive 3)不应该出现在level 2,而只能出现在(more ...)的第三层。看:designsd.fr/ap
  • 我的错误是代码中有错字。看看更新的版本,现在应该可以了。
猜你喜欢
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多