web-dev-qa-db-fra.com

Changer le libellé de l'élément de menu admin?

J'utilise le plugin de Jigoshop et j'aimerais changer le libellé du menu admin en autre chose que "Produits":

enter image description here

Comment puis-je faire ceci? Quels fichiers ont besoin d'être édités?

1
Rob

Comme Geert l’a noté, vous ne devriez pas éditer les fichiers de plug-ins: les modifications seront remplacées par une mise à jour (... et vous devriez vraiment garder vos plug-ins à jour ...). La meilleure chose à faire est ...

Demandez aux développeurs du plug-in d'ajouter un crochet pour filtrer l'étiquette

Pour maintenant , vous pouvez toutefois effectuer l'une des deux tâches suivantes:

  • Utilisez un crochet lorsque le type de publication est enregistré pour mettre à jour un objet de type publication
  • Profitez du fait que l'étiquette est traduisible

Méthode 1:

add_action('registered_post_type','wpse54367_alter_post_type',10,2);

function wpse54367_alter_post_type($post_type, $args){
     if( $post_type != 'product' )
         return;

     //Get labels and update them 
     $labels = get_post_type_labels( get_post_type_object( $post_type ) );
     $labels->name = 'Some things';
     $labels->singular_name= 'Some thing';

     //update args
     $args->labels = $labels;
     $args->label = $labels->name;

     //update post type
     global $wp_post_types;
     $wp_post_types[$post_type] = $args;
}

Méthode 2:

puisque l'étiquette est 'traduisible', vous pouvez utiliser le filtre gettext.

add_filter( 'gettext', '54367_change_label', 10, 2 );

function wpse51861_change_help_text( $translation, $text ) {

if ( $text == 'Products' )
    return __('Something else','jigoshop');

return $translation;
}
7
Stephen Harris

Vous pouvez utiliser le plugin Admin Menu Editor .

1
marcochiesi

Alors que la réponse de Stephen est un excellent moyen de travailler avec la situation actuelle, une solution plus propre existerait si les développeurs de plug-in effectuaient un simple changement.


Action à prendre par les développeurs du plugin:

Tout d’abord, lors de l’enregistrement d’un type de message, vous devez définir le libellé menu_name . Cette étiquette est spécifiquement utilisée pour le menu; si elle n’est pas définie, l’étiquette name est utilisée par défaut.

Lors de la définition de l’étiquette menu_name, la fonction de traduction _x() doit être utilisée. De cette façon, les traducteurs peuvent fournir une traduction spécifique uniquement pour le nom du menu. Sinon, la traduction de "Produits" s’appliquera également à l’étiquette name normale.

register_post_type('product', array(
    'labels' => array(
        'name'      => __( 'Products', 'jigoshop' ),
        'menu_name' => _x( 'Products', 'Admin menu name', 'jigoshop' ),
        // ...

Mise à jour: j'ai ouvert une requête sur GitHub pour ces modifications dans WooCommerce. Le code de Jigoshop est probablement très similaire.


Action à prendre par l'utilisateur du plug-in:

Chargez un fichier de traduction personnalisé avec une traduction spécifique pour la chaîne de nom de menu. Dans votre fichier po, l'entrée ressemblerait à ceci:

msgctxt "Admin menu name"
msgid "Products"
msgstr "My Productzz"

Pour charger un fichier de traduction personnalisé, vous pouvez vous connecter à la fonction load_textdomain() . Un plugin bien construit vous permettrait également de déposer des fichiers de traduction personnalisés dans le répertoire wp-content/languages/{plugin_name}/. WooCommerce le permet , je ne suis pas sûr de Jigoshop.

0
Geert