web-dev-qa-db-fra.com

Comment puis-je supprimer le bouton "Ajouter un nouveau" dans mon type d'article personnalisé?

De nombreux types de messages personnalisés nécessitent la fonction Ajouter [type de message personnalisé], mais j'ai un type de message personnalisé "À propos de" et je n'ai pas besoin de "Ajouter un nouveau" pour le type de message personnalisé. Donc, je veux supprimer le bouton en haut qui dit "Ajouter à propos"

Voici ce que je veux dire:

enter image description here

Une idée de comment je peux enlever ça?

7
Lucas Santos

S'il vous plaît se référer ci-dessous:

function disable_new_posts() {
// Hide sidebar link
global $submenu;
unset($submenu['edit.php?post_type=CUSTOM_POST_TYPE'][10]);

// Hide link on listing page
if (isset($_GET['post_type']) && $_GET['post_type'] == 'CUSTOM_POST_TYPE') {
    echo '<style type="text/css">
    #favorite-actions, .add-new-h2, .tablenav { display:none; }
    </style>';
}
}
add_action('admin_menu', 'disable_new_posts');
5
Helping Hands

Une solution plus jolie serait de désactiver la possibilité de créer un type_post_personnalisé:

Passez simplement le paramètre 'create_posts' => false, dans le tableau de capacités lors de l'appel register_post_type .

$args = array(
        'label'               => __( 'Custom Post Type', 'text_domain' ),
        'description'         => __( 'Custom Post Type', 'text_domain' ),
        'labels'              => $labels,
        'supports'            => array( ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'map_meta_cap'        => true,
        'capability_type' => 'custom_post_type',
        'capabilities' => array(
            'create_posts' => false
        )
    );
    register_post_type( 'custom_post_type', $args );
23
TompaLompa

La réponse de Edited @ TompaLompa était incomplète. L'ajout de create_posts => false ne fonctionnera pas si map_meta_cap n'est pas défini sur true.

Ne pas définir ce paramètre (ou le régler sur false) désactivera également la modification du type de publication. En effet, vous auriez besoin d'ajouter la capacité edit_post à chaque rôle d'utilisateur afin de add AND edit votre type de publication.

La définition de ce paramètre utilisera WP la gestion interne des méta-capacités par défaut et le rendra opérationnel pour vous si vous n'avez pas besoin d'un contrôle plus fin des fonctionnalités de rôle que celles par défaut WP.

2
bynicolas

Ensuite, si vous souhaitez simplement supprimer Ajouter nouveau et que vous n'utilisez pas custom_post_type, vous ne devez pas utiliser 'capability_type' => 'custom_post_type'. Vous feriez mieux de supprimer ce code. Bonne chance :)

Donc, la démo est ci-dessous:

array(
'labels' => $member_labels,
'has_archive' => true,
'public' => true,
'hierarchical' => true, // like page
'rewrite' => array('slug' => 'member_pages'),
'supports' => array(
    'title',
    'editor',
    'excerpt',
    'custom-fields',
    'thumbnail',
    'page-attributes',
),
'taxonomies' => array('post_tag', 'cm_club'),
// 'capability_type' => 'custom_post_type',
'capabilities' => array(
    'create_posts' => false,
),
'map_meta_cap' => true,
)
0
Ni Xiaoni

Le meilleur moyen que j’ai trouvé est d’installer le plugin add-admin-javascript et de l’activer, puis aller dans les paramètres et ajouter du javascript pour écrire ce code dans la dernière boîte.

$('.wrap .wp-heading-inline').remove();
$('.wrap .page-title-action').remove();
$('#wp-admin-bar-new-content').remove();
0
Navesh Kintali