通过类方法创建管理子菜单页面

时间:2017-12-24 作者:Cedon

我创建了一个PHP类,用于处理自定义帖子类型、自定义分类法、元框和自定义元数据字段的创建。

我的下一步是添加在管理后端的CPT菜单下创建子页面的功能。为了做到这一点,我有以下定义该方法的代码:

public function add_submenu_page( $title, $capability = \'administrator\' ) {

        // Set variables
        $post_type = self::uglify( $this->post_type_name );
        $menu_title = self::beautify( $title );
        $menu_capability = $capability;
        $parent_slug = \'edit.php?post_type=\' . $post_type;
        $menu_slug = self::uglify( $post_type ) . \'_\' . \'menu_\' . self::uglify( $title );

        add_action( \'admin_menu\', function( $parent_slug, $menu_title, $menu_capability, $menu_slug )  {
                add_submenu_page(
                    $parent_slug,
                    $menu_title,
                    $menu_title,
                    $menu_capability,
                    $menu_slug,
                    function() {
                        echo \'The Page Actually Worked!\';
                    }
                );
        } );
}
我用以下方式来称呼它:

$cpt->add_submenu_page(
    \'Options\'
);
我做了个测试error_log() 命令的回应,它的结果应该是这样的,但当我继续并实际实现方法中的代码时,当我尝试访问本地开发主机和debug.log WordPress提供以下内容:

PHP致命错误:Uncaught ArgumentCounter错误:参数太少,无法使用函数JL\\u CustomPostType:{closure}(),在D:\\zSite\\wpdev\\wp includes\\class wp hook中传递了1。php位于第286行,D:\\WordPress\\Plugins\\jl cpt casestudies\\class jl custom post type中正好有4个。菲律宾比索:407

我是不是错过了什么add_action() 真的不喜欢匿名函数吗?

1 个回复
SO网友:mmm

行动admin_menu 使用一个空参数调用,则匿名函数只能使用0或1个无用参数。然后,如果要将变量传递给此函数,可以尝试:

public function add_submenu_page( $title, $capability = \'administrator\' ) {

    $post_type = self::uglify( $this->post_type_name );


    $GLOBALS["MyPlugin_menu"] = [
        "post_type" => $post_type,
        "menu_title" => self::beautify( $title ),
        "menu_capability" => $capability,
        "parent_slug" => \'edit.php?post_type=\' . $post_type,
        "menu_slug" => self::uglify( $post_type ) . \'_\' . \'menu_\' . self::uglify( $title ),
    ];


    add_action("admin_menu", function() {

        add_submenu_page(
              $GLOBALS["MyPlugin_menu"]["parent_slug"]
            , $GLOBALS["MyPlugin_menu"]["menu_title"]
            , $GLOBALS["MyPlugin_menu"]["menu_title"]
            , $GLOBALS["MyPlugin_menu"]["menu_capability"]
            , $GLOBALS["MyPlugin_menu"]["menu_slug"]
            , function() {
                echo \'The Page Actually Worked!\';
            }
        );


    });


}

结束

相关推荐

ARRAY_FILTER WARNING-wp-Includes/post.php第3148行

我插入the following code, 请参见下文,从前端提交帖子。提交时,会出现以下警告:警告:array\\u filter()要求参数1为数组,字符串在[…]中给出/wp包括/后。php在线3148我不知道警告来自哪里,哪个数组是字符串?function ty_front_end_form() { ?> <form id=\"custom-post-type\" name=\"custom-post-type\" method=\"post