首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抽象预见函数

抽象预见函数
EN

Stack Overflow用户
提问于 2018-05-22 11:18:21
回答 1查看 72关注 0票数 0

我使用foreach创建了一个函数,用于将数据存储在数组中(在本例中,是wordpress菜单项):

代码语言:javascript
复制
public function beratungmenu()
{
    $array_menu = wp_get_nav_menu_items("205");
    $beratungmenu = array();
    foreach ($array_menu as $m) {
        if (empty($m->menu_item_parent)) {
            $beratungmenu[$m->ID] = array();
            $beratungmenu[$m->ID]['ID']          =   $m->ID;
            $beratungmenu[$m->ID]['title']       =   $m->title;
            $beratungmenu[$m->ID]['url']         =   $m->url;
            $beratungmenu[$m->ID]['postid']      =   get_post_meta( $m->ID, '_menu_item_object_id', true );
            $beratungmenu[$m->ID]['desc']        =   get_field('menu_item_desc', $m);
            $beratungmenu[$m->ID]['icon']        =   get_field('fa_icon_name', get_post_meta( $m->ID, '_menu_item_object_id', true ));
        }
    }
    $this_menu = wp_get_nav_menu_object("205");
    $beratungmenu['menu_title'] = $this_menu->name;      

    return $beratungmenu;
}

public function institutmenu()
{
    $array_menu = wp_get_nav_menu_items("206");
    $institutmenu = array();
    foreach ($array_menu as $m) {
        if (empty($m->menu_item_parent)) {
            $institutmenu[$m->ID] = array();
            $institutmenu[$m->ID]['ID']          =   $m->ID;
            $institutmenu[$m->ID]['title']       =   $m->title;
            $institutmenu[$m->ID]['url']         =   $m->url;
            $institutmenu[$m->ID]['postid']      =   get_post_meta( $m->ID, '_menu_item_object_id', true );
            $institutmenu[$m->ID]['icon']        =   get_field('fa_icon_name_institut', get_post_meta( $m->ID, '_menu_item_object_id', true ));
        }
    }
    $this_menu = wp_get_nav_menu_object("206");
    $institutmenu['menu_title'] = $this_menu->name;

    return $institutmenu;
}

我在这里要做的就是为每个菜单创建一个单独的函数,这并不是非常优雅,因为函数做同样的事情,只是使用不同的数组名称。

为了学习的目的,我试图找到一种方法将这个想法抽象成一个层次,使其能够只有一个函数执行相同的操作,传递菜单id (示例中的“205”和"206“),检索菜单的名称,根据菜单项名称命名数组,然后执行上述函数所做的工作。

这怎么可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 11:36:44

您可以像这样获取菜单:

代码语言:javascript
复制
public function getMenu($menuId, $fieldName)
{
    $array_menu = wp_get_nav_menu_items($menuId);
    $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]['postid']      =   get_post_meta( $m->ID, '_menu_item_object_id', true );
            $menu[$m->ID]['icon']        =   get_field($fieldName, get_post_meta( $m->ID, '_menu_item_object_id', true ));
        }
    }
    $this_menu = wp_get_nav_menu_object($menuId);
    $menu['menu_title'] = $this_menu->name;

    return $menu;
}

$beratungmenu = getMenu("205", "fa_icon_name");
$institutmenu = getMenu("206", "fa_icon_name_institut");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50466366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档