web-dev-qa-db-fra.com

Comment changer le menu d'administration "Pages" en quelque chose d'autre

Lorsque vous créez un type d'article personnalisé, vous avez la possibilité de définir divers éléments liés à ce type d'article, qui vous permettent essentiellement de définir des éléments tels que le titre du menu, le texte "ajouter un nouvel article", etc.

Ce que j'essaie de savoir, c'est quel code je dois ajouter à mon fichier functions.php afin que je puisse définir ces éléments pour un type de publication "par défaut" existant que Wordpress ajoute.

Ainsi, par exemple, disons que je souhaite changer le type de publication "Pages" en "Sections principales".

Actuellement, ce que j'ai fait est utilisé le code suivant:

add_filter( 'gettext', 'change_admin_menu_pages' );
add_filter( 'ngettext', 'change_admin_menu_pages' );
function change_admin_menu_pages( $translated ) {
    $translated = str_replace( 'Page', 'Core Page', $translated );
    $translated = str_replace( 'page', 'core page', $translated );
    return $translated;
}

Bien que cela fonctionne et remplace simplement chaque instance de "pages" par "sections principales", ce que j'ai remarqué, c'est qu'elle affecte également d'autres zones du site, telles que les plugins qui utilisent "pages =" dans leur URL.

En tant que tel ... existe-t-il un moyen simple de définir les paramètres de type de publication pour les types de publication Wordpress par défaut tels que "pages" et "publications"? Si tel est le cas, quelqu'un pourrait-il expliquer rapidement comment cela pourrait fonctionner?

Sur une note différente ... Je pense que l'utilisation du filtre

  • add_filter ('ngettext', ...)

est en fait très utile mais ce que je ne comprends pas, c’est comment restreindre la zone où il est autorisé à filtrer les choses.

Une réponse aux deux questions ou à l'une ou l'autre de ces questions serait grandement appréciée.

Merci d'avance!

1
NetConstructor.com

Un autre facile! :)

Comme vous le savez, je pense beaucoup à WordPress en général, mais l’architecture du menu d’administration est l’un des plus odieux piratages que je connaisse dans les logiciels open source. Ce qui n’est que plus grand, c’est le peu de volonté de l’équipe centrale WordPress de reconnaître à quel point il est grave et son manque de volonté de discuter de l’améliorer. Mais je m'égare ...

Quoi qu'il en soit, voici ce que vous voulez (je pense):

Screenshot of a WordPress admin menu modified to
(source: mikeschinkel.com )

Et voici comment l'obtenir:

add_action('admin_menu','rename_pages_to_main_sections');
function rename_pages_to_main_sections() {
  global $menu;
  global $submenu;
  $menu[20][0] = 'Main Sections';
  $submenu['edit.php?post_type=page'][5][0] = 'Main Sections';
}

P.S. Le code que j'ai posté ici peut également vous être utile:

7
MikeSchinkel

Mike, vous auriez dû mettre une petite étiquette "sarkasm" sur la ligne "Another easy!" en ligne ... pendant un moment, je ne comprenais pas trop en quoi il était facile de pirater les tableaux de menus de base ... jusqu'à ce que je lise votre "Challenge".

J'ai un défi similaire avec 3.0.5 ... qui consiste à essayer d'ajouter une page personnalisée sous une section de types de publication personnalisée. Ce faisant, il se charge toujours comme edit.php? Post_type = xyz.

En fait, edit.php inclut admin-header.php, qui à son tour inclut ensuite admin.php, ce qui entraîne le chargement de la page spécifiée via add_submenu_page (). Mais tout d’abord, cela ressemble plus à une heureuse coïncidence, deuxièmement, c’est seulement après que edit.php a fait tout son travail d’initialisation. MAL.

En outre, cela peut entraîner des problèmes lorsque vous essayez de réutiliser votre URL ou une partie de celle-ci (comme les arguments de requête et autres) sur votre page.

En tout et pour tout, je suis tout à fait d’accord… ce genre de choses est bien trop facile à faire pour justifier une refonte de la génération du menu administrateur. ;-)

Merci quand même, pour votre indice, je vais essayer ce que je peux réaliser en piratant les tableaux directement, maintenant.

0
wyrfel