无法从函数返回值

时间:2021-11-26 作者:Ryan

下面的函数用于返回WordPress子菜单页面的列表。

function get_admin_menus() {
    global $submenu, $menu, $pagenow;
    if ( current_user_can(\'manage_options\') ) {
        if( $pagenow == \'index.php\' ) {
        foreach ( $submenu as $index => $menu_item ) {
            foreach ( $menu_item as $value) {
      
                    $submenu_page = $value[2];
                
                    // return $submenu_page;
                    echo $submenu_page;

                }
            }
        }
    }
}
添加操作add_action( \'admin_notices\', \'get_admin_menus\' ); 显示子菜单项的列表。这只适用于echo.

我希望在使用时将值返回到另一个函数中return $submenu_page 具有echo get_admin_menus() 似乎不起作用。

例如:

function test () {
  echo get_admin_menus();
}
我错过了什么或做错了什么?

1 个回复
最合适的回答,由SO网友:John C 整理而成

退货线周围的foreach意味着只有第一件物品会被退货-也许这就是你想要的?

如果不是,那么您应该将$值[2]赋给一个局部变量(如果您想要一个字符串,或者可能是一个数组,那么应该进行连接?)并在循环后返回局部变量。

function get_admin_menus() {
    global $submenu, $menu, $pagenow;
    $r = \'\';
    if ( current_user_can(\'manage_options\') ) {
        if( $pagenow == \'index.php\' ) {
        foreach ( $submenu as $index => $menu_item ) {
            foreach ( $menu_item as $value ) {
                    $r .= $value[2];
                }
            }
        }
    }
    return $r;
}

相关推荐

static array on functions.php

在函数中。php中,我想访问数据库一次,以获取一个ACF对象,然后在本地“保存”它,以防止对数据库的进一步请求。我想首先在“init”钩子中调用以下函数。然后,假设,当我在以后的挂钩上调用它时,由于使用了“static”关键字,$current\\u store var已经设置好了,函数将在第一个“if”返回已经保存的静态var时停止。它不起作用-当访问稍后挂钩上的函数时,“isset($current\\u store)”返回false。我做错了什么?function get_current_store