Help with page nav?

时间:2011-08-11 作者:Sarah Morrow

我正在接管一个站点,我们正在为它创建一个姐妹站点,但问题是导航是为另一个站点设置的,所以我在获取导航链接到页面时遇到了问题。它所做的是使用某种过滤器。。。因此,当我尝试单击导航栏上的链接时,除了显示一个空的下拉菜单外,什么也不会发生。我们没有在这个项目上的子页面需要,所以我需要帮助找出如何编辑过滤器,使父页面作为链接,而不是“菜单标题”,如果你愿意的话。

这是我的代码:

<?php 

                //add_filter (\'wp_list_pages\', \'formatNavList\');
                $myPages = wp_list_pages(array(\'title_li\' =>\'\', \'depth\' =>1, \'sort_column\' => \'menu_order, post_title\', \'echo\' =>0, )); 

                $templateDir = get_bloginfo("template_directory");
                $pattern1 = "/<li.*?>.*?<a.*?>(.*?)<\\/a>/is";
                $replString1 = "<li class=\'navButton\' >$1
                <div class=\'dropdown1Col\' >
                    <img class=\'dropdown1ColTop\' src=\'$templateDir/images/bgGraphics/DropDownNav_1ColTop_200x30.png\'  />
                    <div>
                        <img class=\'dropdown1ColMid\' src=\'$templateDir/images/bgGraphics/DropDownNav_1ColMid_Stretch.png\' />";

                $pattern2 = "/(<\\/li>\\s*?<li[^>]*navButton.*?>)/is";
                $replString2 = "            <p class=\'clearFloat\' />
                                    </div>
                                <img class=\'dropdown1ColBtm\' src=\'$templateDir/images/bgGraphics/DropDownNav_1ColBtm_200x30.png\'  />
                            </div>$1";


                $pattern3 = "/(<\\/li>\\s*?)$/is";
                $replString3 = "            <p class=\'clearFloat\' />
                                    </div>
                                <img class=\'dropdown1ColBtm\' src=\'$templateDir/images/bgGraphics/DropDownNav_1ColBtm_200x30.png\'  />
                            </div>";

                $menu = explode(\'<li \', $myPages);
                $sub = 0;
                $i = 0;
                $id = array();

                foreach ($menu as $key => $val) {

                    $match = $matches = 0;

                    if ($sub == 0){
                        $id[] = $key;
                        $pos = strpos($val,\'<a\');
                        $text = preg_replace($pattern1, $replString1, "<li alt=\'$sub\' $val");
                        $output .= $text;
                    }else{
                        $output .= "<li alt=\'$sub\' $val";
                    }
                    if (preg_match_all("/(<ul class=\'children\'>)/",$val,$match,PREG_PATTERN_ORDER)){
                        $sub = $sub + count($match[0]);
                    }else if (preg_match_all("/(<\\/ul>)/",$val,$matches,PREG_PATTERN_ORDER)){
                        $sub = $sub - count($matches[0]);
                    };
                    $i++;
                    if($i==3){$i=0;};

                }
                $output = preg_replace($pattern2, $replString2, $output);
                $output = preg_replace($pattern3, $replString3, $output);

                echo $output;
            ?>
任何帮助都将不胜感激!提前感谢您!

2 个回复
SO网友:Jeremy Jared

我建议为您的站点使用WP\\u Nav菜单。要使用此功能,只需将其添加到当前导航的位置:

<?php
    add_action( \'init\', \'register_my_menus\' );
function register_my_menus() {
register_nav_menus(
    array(
        \'primary-menu\' => __( \'Main Menu\' ),
        \'secondary-menu\' => __( \'Secondary Menu\' ),
        \'tertiary-menu\' => __( \'Tertiary Menu\' )
        )
    );
}
?>
然后,您可以使用此选项在模板文件中显示导航:

<div id="menu">
<?php wp_nav_menu( array( \'theme_location\' => \'primary-menu\' ) ); ?><!-- End Navigation -->
</div><!-- End #menu-->
使用上述代码,您可以在不同位置使用最多3个菜单。要添加另一个菜单,只需将上面示例中的“主菜单”更改为功能中列出的其他3个菜单之一。php文件。现在,您可以转到WP Admin>Appearance>菜单,创建导航菜单,将页面/帖子或类别/标签添加到菜单中,并使其达到您想要的深度。

SO网友:Chip Bennett

如果您想坚持使用页面菜单(尽管我强烈建议@JeremyJared使用自定义导航菜单的解决方案),请使用以下代码替换上述所有代码:

wp_list_pages( array( \'title_li\' =>\'\', \'depth\' =>1, \'sort_column\' => \'menu_order, post_title\' ) );
然后,使用CSS应用您需要的任何布局/样式。

结束