it-swarm.com.de

Beschreibung zur benutzerdefinierten Taxonomie-Admin-Metabox hinzufügen

Ich habe eine benutzerdefinierte Taxonomie erstellt:

add_action( 'init', 'create_collection_taxonomies', 0 );
function create_collection_taxonomies() {
    $labels = array(
        'name'                       => _x( 'Collection Tags', 'taxonomy general name' ),
        'singular_name'              => _x( 'Collection Tag', 'taxonomy singular name' ),
        'search_items'               => __( 'Search Collection Tags' ),
        'popular_items'              => __( 'Popular Collection Tags' ),
        'all_items'                  => __( 'All Collection Tags' ),
        'parent_item'                => __( 'Parent Collection Tag' ),
        'parent_item_colon'          => __( 'Parent Collection Tag' ),
        'edit_item'                  => __( 'Edit Collection Tag' ),
        'update_item'                => __( 'Update Collection Tag' ),
        'add_new_item'               => __( 'Add New Collection Tag' ),
        'new_item_name'              => __( 'New Collection Tag Name' ),
        'menu_name'                  => __( 'Collections Tags' ),
    );

    $args = array(
        'description'           => 'Used to select promo/video for display in app.',
        'hierarchical'          => true,
        'labels'                => $labels,
        'show_ui'               => true,
        'show_admin_column'     => true,
        'query_var'             => true,
        'rewrite'               => array( 'slug' => 'CollectionTag' ),
    );

    register_taxonomy( 'CollectionTag', array('collection', 'videos', 'promos'), $args );
}

Ich fügte das Argument description hinzu und dachte, es würde in der Taxonomie-Metabox im WP admin erscheinen. Dies scheint jedoch nicht der Fall zu sein.

Ich habe diesen Beitrag von 2011 gefunden und gesagt, ich müsste jQuery verwenden, um eine Beschreibung in die Box aufzunehmen, aber es scheint seltsam, dass wir eine Beschreibung definieren können, ohne sie verwenden zu können.

Verstehe ich den Zweck dieses Arguments falsch aus dem, was ich im Codex lese? Wie kann ich erreichen, dass diese Beschreibung in der Meta-Box für diese Taxonomie angezeigt wird?

2
Yazmin

Wenn wir uns die Dateien ansehen, die die Metabox erstellen, gibt es nichts, in das wir wirklich einbinden können, um die Beschreibung hinzuzufügen, sodass wir jQuery verwenden müssen. Da das Skript extrem klein ist, habe ich mich entschieden, es nicht in eine externe Datei zu kopieren, sondern stattdessen den admin_footer hook zu verwenden:

/**
 * Prepend taxonomy descriptions to taxonomy metaboxes
 */
function append_taxonomy_descriptions_metabox() {
    $post_types = array( 'page' );          // Array of Accepted Post Types
    $screen     = get_current_screen();     // Get current user screen

    if( 'edit' !== $screen->parent_base ) { // IF we're not on an edit page - just return
        return;
    }

    // IF the current post type is in our array
    if( in_array( $screen->post_type, $post_types ) ) {
        $taxonomies = get_object_taxonomies( $screen->post_type, 'objects' );   // Grab all taxonomies for that post type

        // Ensure taxonomies are not empty
        if( ! empty( $taxonomies ) ) : ?>

            <script type="text/javascript">

              <?php foreach( $taxonomies as $taxonomy ) : ?>

                var tax_slug = '<?php echo $taxonomy->name; ?>';
                var tax_desc = '<?php echo $taxonomy->description; ?>';

                // Add the description via jQuery
                jQuery( '#' + tax_slug + 'div div.inside' ).prepend( '<p>' + tax_desc + '</p>' );

              <?php endforeach; ?>

            </script>

        <?php endif;
    }
}
add_action( 'admin_footer', 'append_taxonomy_descriptions_metabox' );

Wir müssen ein $post_types-Array testen, damit wir dieses nicht zu every post type oder every page hinzufügen, sondern nur zu bestimmten Seiten. Wir könnten dasselbe für Taxonomien tun, aber ich habe in diesem Szenario nicht.


BONUSMATERIAL

Im Folgenden wird die Beschreibung der Seite "Admin-Taxonomie" hinzugefügt (auf der Sie neue Begriffe hinzufügen). Wir verwenden einen viel einfacheren Hook add_action( '{$taxonomy}_pre_add_form' ):

/**
 * Prepend taxonomy description to Add New Term form
 */
function CollectionTag_admin_edit_description( $tax_slug ) {

    // Grab the Taxonomy Object
    $tax_obj = get_taxonomy( $tax_slug );

    // IF the description is set on our object
    if( property_exists( $tax_obj, 'description' ) ) {
        echo '<h2>Description</h2>';
        echo apply_filters( 'the_content', $tax_obj->description );
    }
}
add_action( 'CollectionTag_pre_add_form', 'CollectionTag_admin_edit_description' );
4
Howdy_McGee