web-dev-qa-db-fra.com

Renommer un élément de menu dans la section du menu Admin pour un type de message personnalisé?

J'ai l'impression que c'est un bug.

Lorsque vous créez un nouveau type de publication personnalisée, il ne semble pas possible de modifier le texte du premier élément de sous-menu. Je fais référence au lien qui vous permet de voir la liste des messages.

Pour ce que je peux dire, cela semble simplement dupliquer le nom du menu principal de type de post qui a été créé.

Est-ce que quelqu'un sait comment modifier ce texte afin que je puisse avoir l'élément de menu principal qui dit "Articles" et le nom du sous-menu de liste de messages à dire "Gérer les articles" ?

J'avais l'impression que "edit_item" contrôlerait le texte à afficher dans le sous-menu, mais pour une raison quelconque, cela ne permet pas de s'enregistrer.

Voici le code que j'utilise actuellement:

//////////////////////////////////////////////////////////////////////////////
// CUSTOM POSTTYPE FOR -- ARTICLES  
//////////////////////////////////////////////////////////////////////////////

add_action('init', 'articles');
function articles() {
 register_post_type('articles', array(
  'labels' => array(
   'name'   => __('Articles'),
   'singular_label'  => __('Article'),
   'new_item'   => __('Add Article'),
   'add_new'   => __('Add Article'),
   'add_new_item'  => __('Add Article'),
   'edit'   => __('Edit Article'),
   'edit_item'   => __('Edit Article'),
   'view'   => __('View Article'),
   'view_item'   => __('View Article'),
   'search_items'  => __('Search Articles'),
   'not_found'   => __('No Articles Found'),
   'not_found_in_trash' => __('No Articles Found in Trash'),
   ),
  'supports' => array(
   'thumbnail',
   'title',
   'editor',
   'author',
   'revisions',
   ),
  'rewrite' => array( 
   'slug'   => 'articles', 
   'with_front'   => false,
   ),
  'rewrite'    => true,
  'can_export'    => true,
  'show_ui'    => true,
  'menu_position'   => 3,
  'public'    => true,
  'query_var'    => true,
  'publicly_queryable'  => true,
  'exclude_from_search'  => false,
  'capability_type'   => 'post',
  'hierarchical'   => false,
 ));
 }


add_filter('manage_edit-articles_columns', 'add_new_articles_columns');
function add_new_articles_columns($articles_columns) {
 $new_columns['cb']     = '<input type="checkbox" />';
 $new_columns['article_thumbnail']   = _x('Image', 'column name');
 $new_columns['title']    = _x('Article Title', 'column name');
 $new_columns['article_excerpt']   = _x('Article Excerpt', 'column name');
 $new_columns['article_source']   = _x('Article Source', 'column name');
 $new_columns['author']    = __('Created by');
 $new_columns['date']    = _x('Last Action', 'column name');
 return $new_columns;
 }
add_action('manage_posts_custom_column', 'manage_articles_columns', 10, 2);
function manage_articles_columns($column_name, $id) {
 global $wpdb;
 switch ($column_name) { 
  case 'article_thumbnail':  
   the_post_thumbnail( array(50,50) );
   break; 
  case 'article_excerpt': echo substr(get_the_excerpt(),0,500); 
   break;
  case 'article_source':
         echo get_the_term_list($post->ID, 'content_sources', '', ', ','');
   break;
  default: break;
  }
 }
3
NetConstructor.com

Bonjour @ NetConstructor.com :

Je pense que vous avez déjà posé la question à ce sujet et je vous ai donné une réponse qui répondrait également à cette question:

Dans cette réponse, je vous ai donné une bibliothèque que vous pouvez utiliser pour rendre l'interaction avec les menus d'administration super facile . Voici ce que vous devez faire pour atteindre votre objectif déclaré sur cette question:

<?php
require_once('wp-admin-menu-classes.php');
add_action('admin_menu','my_admin_menu');
function my_admin_menu() {
  rename_admin_menu_section('Articles','Manage Articles');`  
}

P.S. BTW, j'ai remarqué qu'il y avait 4 réponses fournies sur cette question que vous avez posées il y a presque une semaine, mais vous n'avez pas été sélectionné répond que la bonne réponse. Depuis que vous avez posé beaucoup de questions ici, je sais que ce n’est pas comme si vous n’aviez pas été là; prenez le temps de choisir la meilleure réponse à vos questions dès que vous avez une réponse viable, sinon les gens pourraient devenir démotivés et continuer à répondre. Quelque chose cela considère ...

1
MikeSchinkel

C'est un problème de sémantique.

'edit_item'   => __('Edit Article'),

C’est ce qui s’affiche lorsque vous modifiez l’article, au singulier, tout comme l’article à modifier, dans le titre supérieur. La raison pour laquelle l'élément de menu de la liste "posts" est appelé "posts" et non "éditer les posts" est parce que cela serait trompeur.

Vous pouvez faire plus que simplement éditer des publications, vous pouvez les supprimer et les déplacer, etc. Il en va de même pour les pages ou tout autre type de publication que vous pourriez avoir. C'est pourquoi le même champ que celui utilisé pour le menu de section est également utilisé pour l'élément de sous-menu initial. Il y a une vraie logique à cela. Cela dit, rien ne vous empêche de définir 'show_ui' => true, sur false et de le mettre en œuvre vous-même.

Cependant, si vous voulez vraiment le modifier pour quelque raison que ce soit, vous devrez ajouter un hook à functions.php pour traiter le menu ultérieurement, en recherchant l'entrée de sous-menu nécessaire dans le tableau et en modifiant son nom.

Quelque chose dans ce sens ferait l'affaire, même s'il peut nécessiter quelques modifications:

function edit_menus() {
    global $menu;
    end ($menu);
    while (prev($menu)){
        $value = explode(' ',$menu[key($menu)][0]);
        if(strpos($menu[key($menu)], "menu name" )){
            $menu[key($menu)] = str_replace("menu name", "newmenuname", $menu[key($menu)]);
            break;
        }
    }
}
add_action('admin_menu', 'edit_menus');
2
Tom J Nowell