将自定义元对象添加到自定义页面

时间:2013-08-17 作者:Zakalwe

我希望能够将元盒添加到我创建的新子菜单页。我有以下基本代码,我希望这些代码可以工作,但似乎不行:

add_action("init", "my_register_post_types");
function my_register_post_types()
{
    register_post_type("my-cpt", array(
        "label" => "My CPT",
        "public" => true
    ));
}

add_action("admin_menu", "my_add_menu_items");
function my_add_menu_items()
{
    add_submenu_page("edit.php?post_type=my-cpt", "Test Page", "Test Page", "edit_posts", "my-cpt-slug", "display_my_test_page");
    //return value from this is my-cpt_page_my-cpt-slug
}

function display_my_test_page()
{
    do_meta_boxes("my-cpt", "normal", null);
}

add_action("add_meta_boxes", "my_add_metaboxes");
function my_add_metaboxes()
{
    add_meta_box("my-cpt-metabox", "My CPT Metabox", "display_my_metabox", "my-cpt_page_my-cpt-slug", "normal", "core");
}

function display_my_metabox()
{
    echo "Hello";
}
根据http://shibashake.com/wordpress-theme/standard-wordpress-metabox, 我应该使用add\\u submenu\\u页面的返回值来代替CPT slug,该返回值将在add\\u meta\\u box函数中使用。

我原本希望metabox会出现在新的“测试页面”上,但没有什么乐趣。有什么想法吗?我错过什么了吗?

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

这个add_meta_boxes 吊钩加载edit-form-advanced.php. 您的自定义插件页面“测试”不使用该文件。你需要加入"plugin admin page hooks" 相反

第二,第三个参数add_meta_box 只是CPT段塞,而不是页面段塞。

以下是您需要更改的内容:

add_action("load-my-cpt_page_my-cpt-slug", "my_add_metaboxes");
function my_add_metaboxes()
{
    add_meta_box("my-cpt-metabox", "My CPT Metabox", "display_my_metabox", "my-cpt", "normal", "core");
}

结束

相关推荐

将Metabox添加到所有自定义帖子类型

好的,我已经浏览了这里的论坛,但还没有找到我想要的。我想看看是否有可能在不需要设置数组的情况下向所有自定义帖子类型添加元盒?或者,可能只是使用自定义帖子类型UI插件创建的CPT?这是我正在测试的代码,但它只出现在常规帖子中。 add_meta_box( \'my-meta-box-id2\', \'Enter your PDF location for your post category below:\', \'cd2_meta_box_cb\', \'post\', \'normal\', \'