web-dev-qa-db-fra.com

Comment créer une taxonomie personnalisée pour un CPT entre les champs Titre et Éditeur?

Cela peut être une copie de cette question - Modification de la priorité du métabox d'une taxonomie personnalisée , mais je ne peux pas déterminer comment appliquer cette réponse. Je ne suis pas sûr de ce que serait mon label tax taxonomy personnalisé et comment l'appliquer uniquement à un type de message personnalisé.

J'ai une taxonomie personnalisée, créée avec register_taxonomy et je voudrais faire en sorte que la boîte de taxonomie apparaisse entre le champ de titre de l'article et le champ de l'éditeur dans la zone d'ajout/modification de wp-admin, pour un type de publication personnalisé défini. Habituellement, vous pouvez modifier l'ordre du CPT dans les menus de l'administrateur avec un champ de priorité, mais je ne pense pas qu'il en existe un pour les taxonomies ...

Merci

1
patrickzdb

Après avoir recherché le lien de s_ha_dum et d’autres pendant un moment, il semblait que le seul moyen de positionner les méta-boîtes entre les champs title et editor était de supprimer et de relire l’éditeur principal comme ceci , mais cela me semble un peu hacky et un autre interlocuteur nous avertit des problèmes potentiels.

J'ai pu combiner la méthode de @ s_ha_dum pour créer une position pour une nouvelle boîte méta et ce code qui m'a permis de créer une nouvelle boîte méta qui fonctionne comme une taxonomie de catégorie.

Si cela peut aider quelqu'un, voici le code de travail permettant de faire apparaître une taxonomie personnalisée entre le titre et l'éditeur:

/***************************************************************
* Function create_ideas_type
* Register ideas type taxonomy 
***************************************************************/
add_action( 'init', 'create_ideas_type', 0 );

function create_ideas_type() {

$labels = array(
    'name' => __( 'Type'),
    'singular_name' => __( 'Type'),
    'search_items' =>  __( 'Search Types' ),
    'popular_items' => __( 'Popular Types' ),
    'all_items' => __( 'All Types' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Type' ),
    'update_item' => __( 'Update Type' ),
    'add_new_item' => __( 'Add New Type' ),
    'new_item_name' => __( 'New Type Name' ),
    'separate_items_with_commas' => __( 'Separate types with commas' ),
    'add_or_remove_items' => __( 'Add or remove types' ),
    'choose_from_most_used' => __( 'Choose from the most used types' ),
);

register_taxonomy('ideas_type','ideas', array(
    'label' => __('Type'),
    'labels' => $labels,
    'public' => true,
    'hierarchical' => true,
    'show_ui' => true,
    'show_in_nav_menus' => false,   
    'query_var' => true,
    'rewrite' => array( 'slug' => 'greenhouse/ideas-ambitions/type', 'with_front' => false),
    ));
}
/***************************************************************
* Functions add_before_editor and move_ideaspost_box
* Reorder the metabox to appear in between title and editor
***************************************************************/ 
// use the action to create a place for your meta box
add_action('edit_form_after_title','add_before_editor');

function add_before_editor($post) {
    global $post;
    do_meta_boxes('ideas', 'pre_editor', $post);
}

add_action('do_meta_boxes', 'move_ideaspost_box');

function move_ideaspost_box() {

    global $post;
    if( $post->post_type != 'ideas' )
        return;

    remove_meta_box( 'ideas_typediv', 'ideas', 'side' );
    $t_name = 'ideas_type';
    if ( !is_taxonomy_hierarchical($t_name) )
        add_meta_box('tagsdiv-' . $t_name, "Type", 'post_tags_meta_box', 'ideas', 'pre_editor', 'low', array( 'taxonomy' => $t_name ));
    else
        add_meta_box($t_name . 'div', "Type", 'post_categories_meta_box', 'ideas', 'pre_editor', 'low', array( 'taxonomy' => $t_name ));
}
0
patrickzdb

Dans votre cas, vous pouvez modifier le code suivant pour accomplir ce que vous recherchez en affectant la méta-boîte de taxonomie personnalisée à un contexte personnalisé, puis en exécutant do_meta_boxes.

/**
 * insert meta boxes before main editor below title
 */
function wpse_140900_add_meta_boxes_after_title( $post ){

    // per the comment below filter by post type
    // http://wordpress.stackexchange.com/questions/140900/how-do-i-make-a-custom-taxonomy-for-a-cpt-appear-inbetween-title-and-editor-boxe/140906#comment201984_140906
    if( $post->post_type != 'targeted-post-type' )
        return;

    // setup function vars
    global $wp_meta_boxes;
    $current_screen = get_current_screen();
    $registered_taxonomy = 'custom_taxonomy';

    // move meta box to after_title position
    $wp_meta_boxes[$current_screen->id]['after_title']['core'][ $registered_taxonomy . 'div'] = $wp_meta_boxes[$current_screen->id]['side']['core'][ $registered_taxonomy . 'div' ];

    // display registered meta boxes for after_title
    do_meta_boxes( get_current_screen(), 'after_title', $post );

    // remove meta box from displaying in the "default"
    unset( $wp_meta_boxes[$current_screen->id]['side']['core'][ $registered_taxonomy . 'div' ] );
}

// init meta boxes after title
add_action( 'edit_form_after_title', 'wpse_140900_add_meta_boxes_after_title' );

Dans cet extrait de code particulier, vos boîtes de méta de barre latérale se déplaceront sous le titre et au-dessus des champs de l'éditeur de contenu.

2
codearachnid