Hinzufügen von benutzerdefinierten Metaboxen zu benutzerdefinierten Seiten

Ich möchte eine Metabox zu einer neuen Untermenü-Seite hinzufügen können, die ich erstellt habe. Ich habe den folgenden grundlegenden Code, von dem ich gehofft hatte, dass er funktioniert, aber es scheint nicht so zu sein:

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"; } 

Laut http://shibashake.com/wordpress-theme/standard-wordpress-metabox sollte ich den Rückgabewert von add_submenu_page verwenden, der in der function add_meta_box anstelle eines CPT-Slugs verwendet wird.

Ich hatte gehofft, dass die Metabox auf der neuen “Test Page” erscheinen würde, aber keine Freude. Irgendwelche Ideen? Fehle ich etwas?

Solutions Collecting From Web of "Hinzufügen von benutzerdefinierten Metaboxen zu benutzerdefinierten Seiten"

Die add_meta_boxes Hooks laden in edit-form-advanced.php . Ihre benutzerdefinierte Plugin-Seite “test” verwendet diese Datei nicht. Sie müssen stattdessen in die “Plugin-Admin-Seiten-Hooks” einhaken.

Zweitens ist der dritte Parameter von add_meta_box nur der CPT-Slug, nicht der Seiten-Slug, den Sie haben.

Hier ist was du ändern musst:

 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"); }