如何动态创建wordpress仪表板子菜单页面?

时间:2014-01-22 13:56:54

标签: php wordpress

是否可以根据选项创建子菜单页面?在我的插件选项页面中,我获得了标题(子菜单页面)的输入字段。这些标题以逗号分隔。我在我的插件脚本中尝试了以下内容:

function my_menu() {
    global $page_hook_suffix;
    $page_hook_suffix = add_menu_page(...); //adding main menu
    $titles=get_option('my_option_name');
    $titles=explode(",",$titles);
    if(!empty(get_option('my_option_name'))){
        foreach($titles as $title){     
            $slug = str_replace(' ', '_', $title);
            add_submenu_page("main_menu_name", "$title", "$title", 'manage_options', "$slug", "$slug");
        }   
    }
}
add_action( 'admin_menu', 'my_menu' );

到目前为止这是有效的。但现在我需要在子菜单页面上显示内容。但是,甚至可以动态创建(内容)函数吗?我不知道如何使用函数名作为变量。

我试过了:

if(!empty(get_option('my_option_name'))){
    foreach($titles as $title){     
        $slug = str_replace(' ', '_', $title) . "()";
        function $slug {
            echo "hi!";
        }
    }   
}

看起来很愚蠢,当然不起作用。发生以下错误:

  

解析错误:语法错误,意外'$ slug'(T_VARIABLE)

甚至可能吗?如果是,如何使用变量作为函数名?

1 个答案:

答案 0 :(得分:0)

eval()是解决方案:

if(!empty(get_option('my_option_name'))){
    $titles=get_option('my_option_name');
    $titles=explode(",",$titles);
    foreach($titles as $title){     
        $slug = str_replace(' ', '_', $title);            
        eval(' function '.$slug.'() {
            echo '.$title.';
            }'
        );            
    }   
}