好吧, 我试图用下面的代码获取菜单项和子菜单的描述, 但我无法获取它。
我正在尝试获得”关于我们”的描述和”我们的董事会工作人员”的描述:
由于菜单项(关于我们)运行良好, 但由于某种原因, 子菜单(我们的董事会和员工)不包含信息描述, 而仅包含ID, URL和标题, 我已经尝试了var_dump()子菜单对象(如你在下面的代码中看到的), 但没有它。
function get_menu_section_description($sectionUrl){
$menu = wp_get_menu_array("menu");
$desc = "";
foreach ($menu as $key => $item){
$arr = $item['url'];
// var_dump($item);
if ($sectionUrl == $arr[0]) {
$desc = $item['description'];
}
if(sizeof($item['children']) > 0){
foreach ($item['children'] as $key => $children){
// var_dump($children);
$arr2 = $children['url'];
if ($sectionUrl == $arr2) {
$desc = $children['description'];
}
}
} } return $desc; }
有谁知道为什么没有说明项, 如何激活它或可能的解决方案?提前致谢。
#1
从WordPress 3.0开始, 你不再需要自定义Walker!
有walker_nav_menu_start_el过滤器, 请参阅https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/
例子
function add_menu_description($item_output, $item, $depth, $args) {
if (strlen($item->description) > 0 ) {
// append description after link
$item_output .= sprintf('<span class="description">%s</span>', esc_html($item->description));
// insert description as last item *in* link ($input_output ends with "</a>{$args->after}")
//$item_output = substr($item_output, 0, -strlen("</a>{$args->after}")) . sprintf('<span class="description">%s</span >', esc_html($item->description)) . "</a>{$args->after}";
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'add_menu_description', 10, 4);
#2
我几天后发现了一个解决方案, 所以可能对某人有帮助, 我遇到的问题是调用菜单wp_get_menu_array()的功能, 我不得不在子菜单中添加说明, 仅是:
function wp_get_menu_array($current_menu) {
$array_menu = wp_get_nav_menu_items($current_menu);
$menu = array();
foreach ($array_menu as $m) {
if (empty($m->menu_item_parent)) {
$menu[$m->ID] = array();
$menu[$m->ID]['ID'] = $m->ID;
$menu[$m->ID]['title'] = $m->title;
$menu[$m->ID]['url'] = $m->url;
$menu[$m->ID]['classes'] = $m->classes;
$menu[$m->ID]['description'] = $m->description;
$menu[$m->ID]['children'] = array();
}
}
$submenu = array();
foreach ($array_menu as $m) {
if ($m->menu_item_parent) {
$submenu[$m->ID] = array();
$submenu[$m->ID]['ID'] = $m->ID;
$submenu[$m->ID]['title'] = $m->title;
$submenu[$m->ID]['url'] = $m->url;
$submenu[$m->ID]['description'] = $m->description; //Line added;
$menu[$m->menu_item_parent]['children'][$m->ID] = $submenu[$m->ID];
}
}
return $menu;
}
评论前必须登录!
注册