Meta-Box wird nicht im Plugin hinzugefügt

Ich versuche, ein einfaches OOP-Plugin zu erstellen, das einige benutzerdefinierte Post-Typen registriert und dann diesem benutzerdefinierten Post-Typ Metaboxen hinzufügt.

Es fügt gerade den Post-Typ hinzu, aber es fügt die Metabox nicht hinzu. Ich habe eine class für die Meta-Boxen.

Hier ist mein Code.

include('class-tracks-meta.php'); // Register activation/deactivation hooks register_activation_hook( __FILE__, array( 'Tracks_Plugin', 'set_up' ) ); register_deactivation_hook( __FILE__, array('Tracks_Plugin', 'tear_down') ); add_action( 'init', array( 'Tracks_Plugin', 'set_up' ) ); /** * Class: Tracks_PLugin * * Class which holds all of the core functions for instantiating the plugin when it's first enabled before * starting to add new songs and genres * * Changes or patches added to README.md */ Class Tracks_Plugin { /** * Constructor Setup */ public function __construct() { new Tracks_MetaBox(); } /* * Call the methods needed to set up the plugin in the WP backend */ public static function set_up() { // static:: used to reference the called class in a context of static inheritance, as self:: will call the original method definition // Explanation http://stackoverflow.com/questions/151969/when-to-use-self-vs-this // static:: refers to class, $this refers to current object static::register_post_type(); static::register_taxonomies(); flush_rewrite_rules(); } public static function tear_down() { flush_rewrite_rules(); } public static function register_post_type() { $labels = array( 'name' => 'songs', 'singular_name' => 'song', 'menu_name' => 'Songs', 'add_new' => 'Add New', 'add_new_item' => 'Add New Song', 'new_item' => 'New Song', 'edit_item' => 'Edit Song', 'view_item' => 'View Songs', 'all_items' => 'All Songs' ); $args = array( 'labels' => $labels, 'description' => 'Songs Custom Post Type', 'public' => true, 'show_in_menu' => true, 'menu_position' => '6', 'supports' => array( 'title', 'editor', 'thumbnail' ) ); register_post_type( 'songs', $args ); } 

Dann ist meine andere class für die Meta-Box das.

 class Tracks_MetaBox { public function __construct() { add_action( 'add_meta_boxes', array( $this, 'add_metabox' ) ); add_action( 'save_meta_box_data', array( $this, 'save' ) ); } public function add_metabox() { /**************************************************** Add the meta boxes needed for the Songs CPT ****************************************************/ function tracks_song_name() { add_meta_box( 'mb_song_name', 'Song Name', array($this, 'html_song_name'), 'songs', 'normal', 'high' ); } /** * Prints the box content. * * @param WP_Post $post The object for the current post/page. */ function html_song_name( $post ) { // Add a nonce field so we can check for it later wp_nonce_field( 'tracks_save_meta_box_data', 'myplugin_meta_box_nonce' ); /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ $tracks_song_name = get_post_meta( $post->ID, '_song_name' ); echo ''; } } 

Das sind Ausschnitte der beiden classn, da der andere Code für die Frage keine Relevanz hat. Dann erstelle ich in meiner Hauptdatei eine Instanz der Hauptklasse.

 / Initialise our Tracks class new Tracks_Plugin(); 

Kann jemand sehen, warum meine Metabox nicht erstellt wird?

Solutions Collecting From Web of "Meta-Box wird nicht im Plugin hinzugefügt"