我希望能够将元盒添加到我创建的新子菜单页。我有以下基本代码,我希望这些代码可以工作,但似乎不行:
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会出现在新的“测试页面”上,但没有什么乐趣。有什么想法吗?我错过什么了吗?
最合适的回答,由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");
}