X

Afficher le menu de type de publication personnalisé comme sous-menu

Extraits par IsItWP

Voulez-vous afficher le type de publication personnalisé comme sous-menu dans le menu de modification des publications ? Bien qu'il existe probablement un plugin pour cela, nous avons créé un extrait de code rapide que vous pouvez utiliser pour afficher le menu de type de publication personnalisé comme sous-menu dans WordPress.

Instructions :

Tout ce que vous avez à faire est d'ajouter ce code au fichier functions.php de votre thème ou dans un plugin spécifique au site :

function nacin_register_slideshows_post_type() {
	register_post_type( 'slideshow', array(
		'labels' => array(
			'name' => 'Slideshows',
			'singular_name' => 'Slideshow',
		),
		'public' => true,
		'show_ui' => true,
		'show_in_menu' => 'edit.php',
		'supports' => array( 'title' ,'thumbnail', 'editor' ),
	) );
}
add_action( 'init', 'nacin_register_slideshows_post_type' );

Note : Si c'est la première fois que vous ajoutez des extraits de code dans WordPress, veuillez consulter notre guide sur comment ajouter correctement des extraits de code dans WordPress, afin de ne pas casser accidentellement votre site.

Si vous avez aimé cet extrait de code, veuillez envisager de consulter nos autres articles sur le site comme : 43 meilleurs thèmes de photographie pour WordPress et comment créer un formulaire de contact dans WordPress.

Commentaires   Laisser une réponse

  1. Mochammad Taufiq November 26, 2013 at 2:12 am

    j'enregistre post_type avec add new item, mais 'add new item' ne s'affiche pas dans le sous-menu, des suggestions pour mon problème ?

  2. Bien. J'essaie d'aller plus loin et d'attacher le type de publication à une page de menu personnalisée. Jusqu'à présent, pas de succès... des idées ?

    1. Votre question est ancienne mais j'ai pensé que cela pourrait être utile à quelqu'un d'autre.
      J'ai passé beaucoup de temps à parcourir le code source de WP pour faire la même chose : j'ai un menu personnalisé créé à l'aide de add_menu_page(). Il a une poignée d'éléments de sous-menu. J'ai un type de publication personnalisé lié à ce menu et je voulais que les liens ajouter / lister pour ce type de publication soient des éléments de sous-menu.

      Réponse courte : Pas de moyen facile de le faire dans WP. La façon dont il génère les menus et l'interface utilisateur des types de publication personnalisés signifie qu'il n'y a pas d'appel simple que vous puissiez faire.

      Solution :
      1. Enregistrez votre type de publication avec les options suivantes :
      ‘show_ui’ => true,
      ‘show_in_menu’ => false
      Dans cet exemple, mon type de publication personnalisé est acct_notes

      2. Dans le fichier functions.php de votre thème ou votre fichier de plugin, ajoutez une action à admin_menu :
      add_action(‘admin_menu’,
      ‘modify_admin_menus’);

      3. Ajoutez des submenu_pages pour les deux liens d'interface utilisateur de publication — lister les publications, créer une nouvelle publication.
      Le premier paramètre est le slug du menu auquel vous l'ajoutez. Le second est le nom qui s'affichera sur la page. Le troisième est ce que le lien affichera. Le quatrième est la capacité requise pour y accéder. Le cinquième est le slug de cet élément de menu. Et le dernier est la fonction qui générera la sortie. Dans ce cas, nous n'allons pas l'utiliser, nous pouvons donc passer NULL.

      add_submenu_page(‘members’, ‘Account Notes’, ‘Account Notes’,
      ‘manage-options’, ‘view_account_notes’, NULL);

      4. La dernière étape est la fonction qui modifiera ces liens de sous-menu afin qu'ils mènent aux pages d'interface utilisateur de publication correctes.

      function modify_admin_menus(){ global $submenu;

      if(array_key_exists(‘members’, $submenu)){

      foreach($submenu['members'] as $key => $value){ $k = array_search('view_account_notes', $value); if($k){

      $submenu['members'][$key][$k] = (current_user_can($submenu['members'][$key][1]))? admin_url('/edit.php?post_type=acct_notes') : ''; }

      $l = array_search(‘new_account_note’, $value);

      if($l){ $submenu['members'][$key][$l] = (current_user_can($submenu['members'][$key][1]))? admin_url('/post-new.php?post_type=dojo_acct_notes') : '';}

      } }

      Ce qui se passe dans la fonction, c'est qu'elle vérifie le tableau global $submenu pour voir si notre élément de menu de niveau supérieur (membres) existe — il pourrait ne pas exister si l'utilisateur n'a pas la permission d'y accéder. S'il l'a, elle cherche ensuite si cet élément de menu de niveau supérieur a une page de sous-menu avec le slug « view_account_notes » — ce que nous avons attribué dans add_submenu_page. Enfin, elle vérifie la permission que nous avons attribuée dans add_submenu_page et si l'utilisateur actuel a cette permission, elle affiche le nouveau lien. S'il ne l'a pas, elle supprime complètement le lien.

      Nous effectuons cette même vérification deux fois — une fois pour le lien permettant de lister notre type de publication personnalisé, et une fois pour le lien permettant d'ajouter un nouveau type de publication personnalisé.

      Il serait beaucoup plus préférable d'avoir cette fonctionnalité intégrée, mais cela vous permettra d'ajouter des interfaces utilisateur de types de publication personnalisés à n'importe quel menu de votre choix.

  3. Merci beaucoup. Pouvez-vous m'aider, s'il vous plaît ? J'ai un problème : je veux créer un menu dans l'administration de WordPress contenant de nombreux types de publication personnalisés enfants pour une gestion facile. Exemple :

    Menu Installations incluant les types de publication : – Réunions ; – Mariages ; – SPA

    Merci beaucoup pour votre aide.

  4. bonne astuce. merci.

    1. de rien, à tout moment,

    2.  Ce n'est pas une astuce, c'est une fonctionnalité

Ajouter un commentaire

Nous sommes ravis que vous ayez choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés conformément à notre politique de confidentialité, et tous les liens sont nofollow. N'utilisez PAS de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.

Liste de contrôle de lancement WordPress

La checklist ultime pour lancer un WordPress

Nous avons compilé tous les éléments essentiels de la liste de contrôle pour le lancement de votre prochain site Web WordPress dans un ebook pratique.
Oui, envoyez-moi l'eBook gratuit !