web-dev-qa-db-fra.com

Comment puis-je faire en sorte que mes types de messages personnalisés apparaissent dans le menu "nav-menus.php"?

Je rencontre un problème avec mes types de publication personnalisés. Je peux les créer correctement dans mon thème, mais je ne peux pas les faire apparaître dans l'écran "Menu" ... du moins pas par défaut.

J'ai essayé d'ajouter des indicateurs de menu et d'interface utilisateur à mon code (voir ci-dessous), mais pas de dés.

Chose intéressante, lorsque j'active le plug-in Interface utilisateur Types de messages personnalisés, les types de messages personnalisés s'affichent correctement (parfois) dans l'écran "Menu". Cela semble me suggérer qu'il y a une étape qui me manque quelque part et que, d'une certaine manière, le plug-in d'interface utilisateur Types de messages personnalisés définit cet indicateur et permet à mon type de message personnalisé et aux taxonomies d'apparaître dans le fichier nav-menus.php ' Écran du menu.

edit :: Le bit ci-dessus a reçu une réponse. Merci Milo. J'aurais dû les activer dans l'onglet "Options d'écran".

Sur une note connexe, existe-t-il un moyen de rendre le type de publication personnalisé disponible sous forme d'élément de menu sans utiliser de taxonomie? Je vais essayer d'expliquer. Dans ce cas, j'ai créé un type de publication de portefeuille.

une. Lorsqu'il apparaît dans le fichier nav-menus.php, je peux sélectionner des pages individuelles à ajouter au menu. Ce n'est pas idéal.

b. Alternativement, je peux attribuer les pages du portefeuille à une catégorie (appelons-le Widgets), et toutes les pages attribuées à des widgets apparaissent sur la page d'archivage. Cela soulève une autre question. Puis-je forcer l'attribution de chaque nouvelle page de portefeuille à au moins une catégorie par défaut, comme les "Messages" se comportent dans WP? Cette solution fonctionne la plupart du temps, jusqu'à ce que quelqu'un oublie d'attribuer une catégorie à une nouvelle page de portefeuille ...

c. La troisième option consiste à utiliser le slug de réécriture et à créer un élément de menu personnalisé, pointez sur (dans ce cas) '/ portfolio /'. Cela fonctionne bien avec mes permaliens. Toutefois, WordPress n'ajoute pas les classes ".current-post-item", ".current-menu-parent" ou ".current-post-parent" à cet élément de menu lors de l'affichage d'une page de portefeuille, ce qui signifie que je ne peux pas utiliser CSS pour mettre en surbrillance l'entrée de menu "Portfolio" lors de la visualisation des pages de portefeuille, comme je le peux avec toutes les autres pages/sous-pages et publications sur le site. Bien que cela ne soit pas une grosse affaire, cela signifie une expérience d'interface utilisateur moins que cohérente pour les visiteurs du site.

Voici mon code pour enregistrer les types de publication personnalisés. Comme vous pouvez le constater, j'ai ajouté une tonne de drapeaux "show_in _...", mais en vain. J'ai essayé de supprimer les indicateurs, de les ajouter un à un et de les tester (avec une base de données propre à chaque fois), mais en vain. Comme je l'ai indiqué ci-dessus, le plug-in d'interface utilisateur Custom Post Types semble permettre ce comportement (la plupart du temps), ce qui semble indiquer que je manque une étape en dehors de ce code d'enregistrement.

Merci d'avance.

add_action( 'init', 'toshihiro_register_portfolio_content_type');
function toshihiro_register_portfolio_content_type(){
    register_post_type('tosh_portfolio',
    array(
         'labels' => array (
             'name' => 'Portfolio Pages',
             'singular_name' => 'Portfolio Page',
             'menu_name' => 'Portfolios',
             'add_new' => 'Create Portfolio Page',
             'add_new_item' => 'Create New Portfolio Page',
             'edit' => 'Edit Portfolio Page',
             'edit_item' => 'Edit Portfolio Page',
             'new_item' => 'New Portfolio Page',
             'view' => 'View Portfolio Page',
             'view_item' => 'View Portfolio Page',
             'search_items' => 'Search Portfolio Pages',
             'not_found' => 'No Portfolio Pages Found',
             'not_found_in_trash' => 'No Portfolio Pages found in Trash',
         ),
        'description' => 'Portfolio or product or project pages',
        'supports' => array('title', 'editor', 'excerpt', 'revisions', 'thumbnail'),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'show_in_nav_menus' => true,
        'query_var' => true,
        'has_archive' => true,
        'hierarchical' => false,
        'can_export' => true,
        'menu_icon' => trailingslashit(TOSH_IMAGES_URI) . 'toshihiro_icon.png',
        'menu_position' => 33,
        'rewrite' => array('slug' => 'portfolio'),
    )
);
register_taxonomy('tosh_cat_port',array (0 => 'tosh_portfolio',),array( 'hierarchical' => true,
                                                            'label' => 'Portfolio Categories',
                                                            'singular_label' => 'Portfolio Category',
                                                            'show_ui' => true,
                                                            'query_var' => true,
                                                            'show_in_nav_menus' => true,
                                                            'rewrite' => array('slug' => 'portfolio_cat'),
                                                             ) );
register_taxonomy('tosh_tag_port',array (0 => 'tosh_portfolio',),array( 'hierarchical' => false,
                                                            'label' => 'Portfolio Tags',
                                                            'singular_label' => 'Portfolio Tag',
                                                            'show_ui' => true,
                                                            'show_in_nav_menus' => true,
                                                            'query_var' => true,
                                                            'rewrite' => array('slug' => 'portfolio_tags'),
                                                             ) );
}
3
Toshihiro

Veuillez vous assurer que dans Apparence -> Menu et aller à l'option d'écran en haut et assurez-vous de cocher l'interface utilisateur CPT, et cela apparaîtra.

1
user100847

Vous pouvez forcer le type de publication personnalisé à rester en modifiant l'option d'utilisateur actuelle "menus de navigation masqués de métabox":

function display_post_type_nav_box(){

    $hidden_nav_boxes = get_user_option( 'metaboxhidden_nav-menus' );

    $post_type = 'foobar'; //Can also be a taxonomy slug
    $post_type_nav_box = 'add-'.$post_type;

    if(in_array($post_type_nav_box, $hidden_nav_boxes)):
        foreach ($hidden_nav_boxes as $i => $nav_box):
            if($nav_box == $post_type_nav_box)
                unset($hidden_nav_boxes[$i]);
        endforeach;
        update_user_option(get_current_user_id(), 'metaboxhidden_nav-menus', $hidden_nav_boxes);
    endif;
}
add_action('admin_init', 'display_post_type_nav_box');
1
Brian Fegter