获取 WordPress 菜单树形结构数组自定义万能菜单

获取 WordPress 菜单树形结构数组自定义万能菜单

在 WordPress 开发中,定制自己的主题和插件难免会遇到菜单生成的问题。虽然 WordPress 已经为我们提供了很好的菜单生成 API,但有时候仍然不能完全满足我们的需求。如果我们需要生成自定义具有树状结构的菜单,就需要通过代码来实现了。

1.准备工作

在开始编写代码之前,我们需要先通过下面的代码获取 WordPress 中自定义菜单的详细信息。

// 获取 menu 数组
$menu_array = wp_get_nav_menu_items( 'menu-name' );

其中 menu-name 是自定义菜单的名称。执行上述代码会得到一个包含了自定义菜单所有信息的数组 $menu_array。

2.构建菜单树

我们可以通过下面的代码来实现将菜单自动构建成树状结构的功能。

// 构建菜单树
$menu_tree = array();
foreach ( $menu_array as $menu_item ) {
    if ( !isset( $menu_tree[$menu_item->menu_item_parent] ) ) {
        $menu_tree[$menu_item->menu_item_parent] = array();
    }
    $menu_tree[$menu_item->menu_item_parent][] = $menu_item;
}

执行上述代码之后,我们将得到一个树状的菜单结构数组 $menu_tree。

3.自定义万能菜单的代码实现

现在我们已经得到了一个树状结构的菜单数组,接下来就可以根据自己的需要来进行菜单的输出和修改。

下面的代码展示了如何通过 $menu_tree 数组来输出一个 ul-li 树状菜单的 HTML 代码。

// 将菜单树输出为树状结构的 HTML 代码,可以通过递归来实现
function print_menu_tree( $parent_id, $menu_tree ) {
    if ( !isset( $menu_tree[$parent_id] ) || count( $menu_tree[$parent_id] ) == 0 ) {
        return;
    }
    echo '<ul>';
    foreach ( $menu_tree[$parent_id] as $menu_item ) {
        echo '<li>';
        echo '<a href="'%20.%20$menu_item->url%20.%20'">' . $menu_item->title . '</a>';
        print_menu_tree( $menu_item->ID, $menu_tree );
        echo '</li>';
    }
    echo '</ul>';
}

// 执行函数,输出树状的菜单
print_menu_tree( 0, $menu_tree );

在上述代码中,我们用到了递归函数来实现了一个树状菜单的输出功能,每个菜单项都是通过一个 <li> 标签来包含的,如果它还有下级菜单,递归函数会输出一个 <ul> 标签来包含下级菜单。

4.总结

通过本文的介绍,我们学会了如何在 WordPress 中获取自定义菜单的信息,如何构建一个树状结构的菜单数组,以及如何通过递归函数输出一个树状菜单的 HTML 代码。通过这些知识,我们可以很方便地在我们的 WordPress 主题或插件中实现自定义的菜单功能,并且可以满足我们对于菜单展示方式的个性化需求。

晓白博客网版权所有,原文地址https://www.xbnb.cn/5379
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容