use*_*354 0 php wordpress menu
我想获取我的wp主菜单的项目.我尝试了一些代码,但所有代码都只返回空白页面.我不知道我必须使用哪种方法,不知道是否需要在页面中包含任何其他页面?
有没有办法直接从数据库中获取菜单项而不使用wp方法和函数?我现在无法理解wp的表结构.所以我完全不知道表之间的关系.
谢谢.
你可以试试这个
$menu_name = 'sidebar-menu'; //menu slug
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) );
echo "<pre>";
print_r($menuitems);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
你会得到你的菜单对象
参考: http: //wiki.workassis.com/wordpress-get-menu-array/
如果您知道您的菜单位置ID(通常在functions.php中通过"register_nav_menus"声明),您可以使用以下代码段:
// GET ALL MENU OBJECTS AT SPECIFIED LOCATION
function yourprefix_get_menu_items($location_id){
//$locations = get_registered_nav_menus();
$menus = wp_get_nav_menus();
$menu_locations = get_nav_menu_locations();
if (isset($menu_locations[ $location_id ]) && $menu_locations[ $location_id ]!=0) {
foreach ($menus as $menu) {
if ($menu->term_id == $menu_locations[ $location_id ]) {
$menu_items = wp_get_nav_menu_items($menu);
break;
}
}
return $menu_items;
}
}
Run Code Online (Sandbox Code Playgroud)
或者来自codex的更短版本:
function yourprefix_get_menu_items($menu_name){
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
return wp_get_nav_menu_items($menu->term_id);
}
}
Run Code Online (Sandbox Code Playgroud)
然后用这个数组做你想做的一切:
$menu_items = yourprefix_get_menu_items('sidebar-menu'); // replace sidebar-menu by desired location
if(isset($menu_items)){
foreach ( (array) $menu_items as $key => $menu_item ) {
...some code...
}
}
Run Code Online (Sandbox Code Playgroud)
这里是关于所有nav_menu数据的链接,您可以通过mysql请求直接从数据库中选择:http: //lasota.community.uaf.edu/2011/07/29/nav-menu-data-location-in-wordpress-3 -2 /