75 votes

WordPress : Désactiver l'option "Ajouter un nouveau" sur les types d'articles personnalisés

Existe-t-il un moyen de désactiver l'option d'ajout d'un nouvel article sous un Custom Post Type dans WordPress (3.0) ? J'ai cherché dans les étiquettes et les arguments mais je n'ai rien trouvé qui ressemble à une telle fonctionnalité.

7voto

l2aelba Points 3156

Désactiver la création de nouveaux messages pour les types de messages enregistrés : (exemple pour post y page )

function disable_create_newpost() {
    global $wp_post_types;
    $wp_post_types['post']->cap->create_posts = 'do_not_allow';
    //$wp_post_types['page']->cap->create_posts = 'do_not_allow';
    //$wp_post_types['my-post-type']->cap->create_posts = 'do_not_allow';
}
add_action('init','disable_create_newpost');

6voto

andrea Points 11
add_action("load-post-new.php", 'block_post');

function block_post()
{
    if($_GET["post_type"] == "custom_type") 
        wp_redirect("edit.php?post_type=custom_type");
}

4voto

clap Points 70

@ Staffan Estberg,

C'est la meilleure façon de cacher le bouton Ajouter un nouveau ou Créer un nouveau dans les postypes personnalisés.

'capability_type'    => 'post',

        'capabilities'       => array( 'create_posts' => false ),       

        'map_meta_cap'       => true,

Il est impossible de créer un nouveau message dans les types de messages personnalisés, que ce soit dans le menu d'administration ou au-dessus de la liste des types de messages.

1voto

Bryan Buxton Points 11

La solution n'est pas tout à fait complète. J'ai trouvé un peu plus d'informations sur cette question ici sur ce poste .

J'avais besoin de désactiver l'ajout de nouveaux posts personnalisés pour le site web d'un parti politique d'état dans leurs types de posts 'County'. Étant donné qu'il n'y a pas beaucoup de chances que de nouvelles lignes de comté soient tracées de sitôt, la fonctionnalité "Ajouter un comté" est plus un handicap qu'une fonctionnalité.

1voto

Umair Hamid Points 63

J'ai trouvé la solution la plus simple. Il suffit d'ajouter ce code dans le fichier function.php .

function hd_add_buttons() {
    global $pagenow;
    if (is_admin()) {
        if ($_GET['post_type'] == 'custom_post_type_name') {
            echo '<style>.add-new-h2{display: none !important;}</style>';
        }
    }
}
add_action('admin_head', 'hd_add_buttons');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X