Metabox wird nicht im benutzerdefinierten Post-Typ angezeigt

Ich versuche, ein Metabox-Eingabefeld in einem benutzerdefinierten Post-Typ zu erstellen, und es funktioniert nicht, selbst wenn ich die statementen so gut wie möglich befolgte. Ich bin kein PHP-Entwickler, also denke ich, es könnte nur eine kleine Sache sein, die fehlt oder falsch ist.

Wenn ich nicht arbeite, meine ich, zeige ich überhaupt nicht in der WP UI.

Hier ist der Code:

 true, 'label' => "All $upper" . 's', 'labels' => array('add_new_item' => "Add New $upper"), 'support' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields'), 'taxonomies' => array('post_tag','category') ), $args ); register_post_type('$name', $args); }); } //now we create and register a taxonomy function add_taxonomy($name, $post_type, $args = array()) { $name = strtolower($name); add_action('init', function() use($name, $post_type, $args) { $args = array_merge( array( 'label' => ucwords($name), ), $args ); register_taxonomy($name, $post_type, $args); }); } /************************************************************ Now we add the names of the custom post type and taxonomies *************************************************************/ add_post_type('snippet', array( 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields'), 'taxonomies' => array('post_tag') )); add_taxonomy('language', 'snippet'); /************************************************************ Creating Metaboxes *************************************************************/ add_action('add_meta_boxes', function() { add_meta_box( 'er_snippet_info', 'Snippet Info', 'er_snippet_info_cb', 'snippet', 'normal', 'high' ); }); function er_snippet_info_cb() { global $post; $url = get_post_custom($post->ID); ?>  <input type="text" name="er_associated_url" id="er_associated_url" value="" /> ID, 'er_associated_url', $_POST['er_associated_url']); } } }); ?> 

Das andere Problem ist, dass das Tag nicht benannt wird, selbst wenn die function vorhanden ist.

Solutions Collecting From Web of "Metabox wird nicht im benutzerdefinierten Post-Typ angezeigt"

Der benutzerdefinierte Post-Typ wird als name registriert, nicht als snippet wie er in der Aktion add_meta_boxes . Dies liegt daran, dass eine PHP-Variable in einfachen Anführungszeichen übergeben wird und nicht interpretiert wird.

Ändere das:

 register_post_type('$name', $args); 

Zu:

 register_post_type($name, $args); 

Das funktioniert auch:

 register_post_type("$name", $args); 

Übergeben Sie PHP-Variablen jedoch niemals in einfache Anführungszeichen, wenn Sie sie interpretieren möchten.

Außerdem wird die Verwendung von add_action('add_meta_boxes_{post-type}', 'callback') empfohlen, um weniger unnötige Hooks für andere Post-Typen (vom Codex ) zu erzeugen.

Im Code versuchen Sie functionen als Parameter in add_action () zu übergeben. Diese Syntax funktioniert in Javascript, aber nicht so gut in PHP. Versuchen Sie, den functionsnamen stattdessen in add_action () zu übergeben.

Dies kann helfen. Es hat für mich funktioniert

 function my_plugin_add_meta_box() { $type_name = array('custom_post_type_name'); foreach ( $type_name as $custom_post_type ) { add_meta_box('my_plugin_meta_box_id', __('Meta Box Name'), 'my_plugin_meta_box_callback', $custom_post_type); } } add_action( 'add_meta_boxes', 'my_plugin_add_meta_box' ); 

und dann können Sie Eingabefelder in der function my_plugin_meta_box_callback hinzufügen. Hoffe, das hilft jemandem.

Standardmäßig gibt es keine Metabox für benutzerdefinierte Post-Typen.

Entweder können Sie ein Plugin wie ADVANCED CUSTOM FIELD hinzufügen

Oder Sie können einen Code zum Hinzufügen eines Meta-Felds zu Ihren benutzerdefinierten Post-Typen schreiben.

Klare Referenzseite:

https://thomasgriffin.io/how-to-automatisch-add-meta-boxes-in-custom-post-types/

// sieh dir diesen Link an

add_meta_box (‘Meta-ID’, ‘Meine benutzerdefinierte Meta-Box’, ‘tgm_custom_meta_box_callback’, $ post_type, ‘normal’, ‘hoch’);