好吧, 我试图用下面的代码获取菜单项和子菜单的描述, 但我无法获取它。
【如何访问子菜单的描述()】我正在尝试获得”
关于我们”
的描述和”
我们的董事会工作人员”
的描述:
文章图片
由于菜单项(关于我们)运行良好, 但由于某种原因, 子菜单(我们的董事会和员工)不包含信息描述, 而仅包含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;
}
推荐阅读
- 如何添加图片到WordPress而不用上传到后端()
- 如何在SQL数据库中访问自定义WordPress邮箱的内容
- 像Betheme这样的多用途主题如何在不使用子域的情况下将同一子域名中的所有子主题包括在内()
- 你如何设置ACF(高级自定义字段)WordPress插件的管理员/后端的样式()
- 你如何在不停机的情况下将大量内容传输到新的WordPress主题()
- 我如何获取帖子的几个词
- 如何在WordPress中将变量传递给模板部分()
- 如何在WordPress中制作此自定义菜单
- 求一文本编辑器控件