Können benutzerdefinierte Taxonomien in einer benutzerdefinierten Metabox angezeigt werden?

Ich zeige gerade benutzerdefinierte Taxonomien in einem Dropdown-Menü an. Jede Taxonomie hat ihren eigenen kleinen Wrapper in der Seitenleiste. Ist es möglich, die Taxonomie zur einfacheren Verwendung in meine benutzerdefinierte Schreibbox zu verschieben?

Bildbeschreibung hier eingeben

Solutions Collecting From Web of "Können benutzerdefinierte Taxonomien in einer benutzerdefinierten Metabox angezeigt werden?"

Das Folgende stammt aus einer Aufgabe “Autor zum Veröffentlichen der Box verschieben”, aber es sollte Ihnen einen Startpunkt geben. Als nächstes sollten Sie sich “/wp-admin/edit-form-advanced.php” ansehen, wo Sie etwas über get_object_taxonomies() finden, um zu sehen, wie Ihre Sachen benannt werden, damit Sie get_object_taxonomies() entfernen und hinzufügen können.

 function wpse_remove_author_box() { if ( ! is_admin() ) return; remove_meta_box( 'authordiv', 'post', 'normal' ); } add_action( 'admin_menu', 'wpse_remove_author_box' ); function wpse_author_to_publish_box() { if ( ! is_admin() ) return; global $post_ID; $post = get_post( $post_ID ); ?> 
Author: < ?php post_author_meta_box( $post ); ?>
< ?php } add_action( 'post_submitbox_misc_actions', 'wpse_author_to_publish_box' );

Ich konnte dies mit benutzerdefinierten Taxonomien auf einer Metabox erreichen, die ich für einen benutzerdefinierten Posttyp von mir erstellt habe, indem ich Folgendes tue:

Zuerst habe ich das zu meiner functions.php hinzugefügt:

 add_action( 'admin_menu', 'remove_default_metaboxes' ); function remove_default_metaboxes() { // Remove 'Keywords' (like tags) metabox remove_meta_box( 'tagsdiv-keyword', 'my-custom-post-type-slug', 'side' ); // Remove 'Groups' (like categories) metabox remove_meta_box( 'groupdiv', 'my-custom-post-type-slug', 'side' ); } 

Der erste Parameter der function remove_meta_box() ist eigentlich eine von WordPress generierte ID. Wenn Sie nicht-hierarchische Taxonomien verwenden (zB “Tags”), wird immer “tagsdiv-” gefolgt von Ihrem benutzerdefinierten Taxonomie-Slug angezeigt. Wenn es sich um eine hierarchische Taxonomie (dh “Kategorie”) handelt, wird die ID der Slug gefolgt von “div”, keine Leerzeichen.

Ich habe dann den folgenden Code in meine Metabox-Vorlage eingefügt:

 
< ?php $box = array( 'args' => array( 'taxonomy' => 'group' ), 'title' => 'Groups' ); post_categories_meta_box($post, $box) ?>
< ?php global $post_ID; $post = get_post( $post_ID ); $box = array( 'args' => array( 'taxonomy' => 'keyword' ) ); post_tags_meta_box($post, $box); ?>

Beachten Sie, dass dies im Fall von “Keywords” oder einer anderen Tag-ähnlichen Taxonomie nicht ausreicht. Die Metadaten-Metabox-functionalität wird über JS erreicht, was von Selektoren abhängt, die nicht von der obigen function erzeugt werden. In meinem Fall wurde dies getriggers, indem die class “inside” zum Schlüsselwort div hinzugefügt wurde und diese Zeilen zu einer separaten JS-Datei hinzugefügt wurden:

 $('.keywords').each(function(){ tagBox.init(); return false; }); 

Stellen Sie sicher, dass Sie das JS aufrufen, nachdem WP die Standard-Post-Skripte geladen hat. Wenn Sie aus irgendeinem Grund keine weiteren Skripts hinzufügen möchten, können Sie dasselbe erreichen, indem Sie die Struktur von WP wie folgt nachahmen:

 
// post_tags_meta_box() etc