web-dev-qa-db-fra.com

Comment supprimer l'entrée "créer un nouveau message" pour un type de message personnalisé?

J'ai un type de message personnalisé créé à l'aide d'un formulaire sur le site. Je veux désactiver la création de nouveau message à partir de Wordpress admin. Y-a-t-il un moyen de faire ça ?

1
hannit cohen

Il y a plusieurs façons (selon ce que vous essayez de faire):

S'il s'agit du bouton "publier"

Vous pourriez…

  1. … Supprimer la capacité du rôle ciblé avec remove_cap()
  2. … Supprimer le bouton publier 1)

    1) voir en bas de la réponse de @toscho

  3. … Ou la meta box entière 2)

    remove_meta_box( 'submitdiv', 'custom_post_id', 'side' );
    

    2) version simplifiée

S'il s'agit du type de post `post` intégré

Vous pourriez…

  1. … Masquez simplement l'entrée du menu via css ou js
  2. … Désélectionnez l'entrée de menu avec

    add_action( 'admin_menu', 'myprefix_adjust_the_wp_menu', 999 );
    function myprefix_adjust_the_wp_menu() {
      $page = remove_submenu_page( 'edit.php', 'post-new.php' );
      //or for custom post type 'myposttype'.
      //$page = remove_submenu_page( 'edit.php?post_type=myposttype', 'post-new.php?post_type=myposttype' );
    }
    
  3. … Empêche tout enregistrement avec le crochet per_save_post et le $_GET['action']

  4. … Faire une redirection lorsque le post-new.php est chargé
2
kaiser

Il existe une méta fonctionnalité create_posts qui n'est pas documentée mais qui est utilisée par WordPress pour vérifier avant d'insérer les différents boutons et liens "Ajouter un nouveau". Dans votre déclaration de type de publication personnalisée, ajoutez capabilities (à ne pas confondre avec cap), puis définissez-la sur false comme ci-dessous.

register_post_type( 'custom_post_type_name', array(
  'capabilities' => array(
    'create_posts' => false,
  )
));
8
Seamus Leahy

@ hannit cohen,

C'est le meilleur moyen de masquer 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 désactivé de créer une nouvelle publication dans des types de publication personnalisés des deux côtés du menu administrateur et au-dessus de la liste des types de publication.

0
clap