WordPress wp获取导航菜单项不提供外部链接

时间:2014-02-16 作者:Matthias Max

当我按照wp get nav菜单项读取nav项时,get\\u page\\u链接($id)或$item->url 没有提供我输入的外部URL:http://www.mydomain.com.

相反,我似乎http://www.mydoamin.com/wordpress/NameOfMenuItem

有什么想法吗?

我正在使用permalinks,我想这可能是问题所在?

这是菜单代码:

<?php
函数bfShowHideMenu($menu\\u name,$args=array()){

// Klassen von außen bestückbar
$bfListClass = "no-bullet bfZ1000";
$bfItemClassLevel1 = "";
$bfItemClassLevel2 = "";
$bfLinkClass = "navitem";
$bfContainerClass = "subScrollNavi";

$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menuitems = wp_get_nav_menu_items( $menu->term_id );

echo \'<ul class="\' . $bfListClass . \'">\';

$count = 0;
$submenu = false;

foreach( $menuitems as $item ):
    // get page id from using menu item object id
    $id = get_post_meta( $item->ID, \'_menu_item_object_id\', true );
    // set up a page object to retrieve page data
    $page = get_page( $id );
    //$link = get_page_link( $id );
    $link = $item->url;

    // item does not have a parent so menu_item_parent equals 0 (false)
    if ( !$item->menu_item_parent ):

        // save this id for later comparison with sub-menu items
        $parent_id = $item->ID;

        // Hat der Knoten Kinder?
        $hasChildren = false;
        foreach( $menuitems as $child ){
            if ($child->menu_item_parent == $parent_id) {
                $hasChildren = true;
                break;   
            }
        }
        echo \'<li class="\';
        if ($hasChildren) echo "bfSHTrigger";
        echo \' \' . $bfItemClassLevel1 . \'">\';

        echo \'<a href="\' . $link . \'" class="\' . $bfLinkClass . \'">\';
            echo mb_strtoupper($page->post_title);
        echo \'</a>\';

    endif;

    if ( $parent_id == $item->menu_item_parent ):

        if ( !$submenu ): 

            $submenu = true;

            echo \'<div class="bfSHContainer bfSHSubScrollNavi \' . $bfContainerClass . \'">\';
            echo \'<ul class="\' . $bfListClass . \'">\';  
        endif;

        echo \'<li class="\' . $bfItemClassLevel2 . \'">\';
        echo \'<a href="\' . $link . \'" class="\' . $bfLinkClass . \'">\' . mb_strtoupper($page->post_title) . \'</a>\';
        echo \'</li>\';

        if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ):

            echo \'</ul>\';
            echo \'</div>\';

            $submenu = false; 
        endif;

    endif;

    if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ):
        echo \'</li>\';

        $submenu = false; 
    endif;

    $count++; 
endforeach;

echo \'</ul>\';     
}
?>

1 个回复
SO网友:Matthias Max

由于某种原因,当我使用$link=$item->url时,它现在可以工作了。而不是$link=get\\u page\\u link($id)。

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。