我创建了一个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()
真的不喜欢匿名函数吗?
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!\';
}
);
});
}