用于显示不带子项的主菜单的函数php快捷代码

时间:2020-10-16 作者:user3998694

我有以下简单的functions.php 生成一个短代码,该代码将向Wordpress站点添加菜单。我想做两件新事情,这样我可以在页脚中使用它。我很懒,不想创建页脚菜单;)

我需要:

过滤主页只显示顶级父项,不显示子页

// Show Footer Menu
function print_menu_shortcode($atts, $content = null) {
extract(shortcode_atts(array( 
                             \'name\' => null, 
                            \'class\' => null ), $atts));
return wp_nav_menu( array( 
                         \'menu\' => $name, 
                         \'menu_class\' => \'footer-menu\', 
                         \'echo\' => false ) );
}

add_shortcode(\'menu\', \'print_menu_shortcode\');

1 个回复
SO网友:Kristián Filo

您可以设置\'depth\' 参数到1 在您的wp_nav_menu() 调用以仅获取顶级项目,以及自定义菜单漫游器,如下所示:

return wp_nav_menu( array( \'menu\' => $name, \'menu_class\' => \'footer-menu\', \'echo\' => false, \'depth\' => 1, \'walker\' => new custom_footer_menu_walker ) );
将自定义菜单漫游器添加到您的函数中。php(12345是您主页的ID,应该排除在外):

class custom_footer_menu_walker extends Walker_Nav_Menu {

    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

        parent::start_el($item_html, $item, $depth, $args);

        $exclude = array();
        $exclude[] = 12345;

        if ( ! in_array( $item->object_id, $exclude ) ) {
            $output .= $item_html;
        }
    }
}

相关推荐

WordPress编辑角色删除外观菜单中除‘menus’之外的所有内容

我正在尝试删除对角色编辑器WP admin中外观菜单中所有内容的访问权限。或者至少,只需删除对主题和插件的访问即可。我发现了如何删除整个外观菜单,而不是像那样删除其中的一部分。这可能吗?最好是功能方面的东西。php,以便在需要时打开/关闭此选项。