Ändern der Admin-Menübezeichnungen
-
-
Vielleicht sollten Sie diesin zwei verschiedene Fragen aufteilen: * "Umbenennen von Admin-Menüelementen" * und * "Ändern der Reihenfolge von Admin-Menüelementen" *?Auf diese Weiseerhalten Siemehr Ansichtenfür Ihre Frage.Maybe you should split this up into two different questions: *"Renaming admin menu items"* and *"Changing the order of admin menu items"*? This will help you get more views for your question.
- 0
- 2011-02-13
- Jan Fabry
-
5 Antworten
- Stimmen
-
- 2011-02-12
Hierist der Vorgang zum Ändern der Beschriftungen (ich habein meinem Beispiel Beiträgein "Kontakte"geändert)
function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = 'Contacts'; $submenu['edit.php'][5][0] = 'Contacts'; $submenu['edit.php'][10][0] = 'Add Contacts'; $submenu['edit.php'][15][0] = 'Status'; // Change name for categories $submenu['edit.php'][16][0] = 'Labels'; // Change name for tags echo ''; } function change_post_object_label() { global $wp_post_types; $labels = &$wp_post_types['post']->labels; $labels->name = 'Contacts'; $labels->singular_name = 'Contact'; $labels->add_new = 'Add Contact'; $labels->add_new_item = 'Add Contact'; $labels->edit_item = 'Edit Contacts'; $labels->new_item = 'Contact'; $labels->view_item = 'View Contact'; $labels->search_items = 'Search Contacts'; $labels->not_found = 'No Contacts found'; $labels->not_found_in_trash = 'No Contacts found in Trash'; } add_action( 'init', 'change_post_object_label' ); add_action( 'admin_menu', 'change_post_menu_label' );
Um die Menüreihenfolge zu ändern,gehen Sie wiefolgt vor:
// CUSTOMIZE ADMIN MENU ORDER function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // this represents the dashboard link 'edit.php', //the posts tab 'upload.php', // the media manager 'edit.php?post_type=page', //the posts tab ); } add_filter('custom_menu_order', 'custom_menu_order'); add_filter('menu_order', 'custom_menu_order');
Ich habe Code zum Entfernen von Elementen,abereristglobal undbasiertnicht auf der Benutzerzugriffsebene
Here's the process to change the labels (I changed posts to "contacts" in my example)
function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = 'Contacts'; $submenu['edit.php'][5][0] = 'Contacts'; $submenu['edit.php'][10][0] = 'Add Contacts'; $submenu['edit.php'][15][0] = 'Status'; // Change name for categories $submenu['edit.php'][16][0] = 'Labels'; // Change name for tags echo ''; } function change_post_object_label() { global $wp_post_types; $labels = &$wp_post_types['post']->labels; $labels->name = 'Contacts'; $labels->singular_name = 'Contact'; $labels->add_new = 'Add Contact'; $labels->add_new_item = 'Add Contact'; $labels->edit_item = 'Edit Contacts'; $labels->new_item = 'Contact'; $labels->view_item = 'View Contact'; $labels->search_items = 'Search Contacts'; $labels->not_found = 'No Contacts found'; $labels->not_found_in_trash = 'No Contacts found in Trash'; } add_action( 'init', 'change_post_object_label' ); add_action( 'admin_menu', 'change_post_menu_label' );
To change the menu order, go with this:
// CUSTOMIZE ADMIN MENU ORDER function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // this represents the dashboard link 'edit.php', //the posts tab 'upload.php', // the media manager 'edit.php?post_type=page', //the posts tab ); } add_filter('custom_menu_order', 'custom_menu_order'); add_filter('menu_order', 'custom_menu_order');
I've got code to remove items, but it's globally and not based on user access level
-
Dasist ausgezeichnet,danke!Jetztmussichnurnocheine Möglichkeitfinden,einen Untermenüpunkt (z. B. Menüs) als Hauptmenüschaltfläche zu verschieben.Irgendeine Idee dazu?This is excellent thanks! Now I just need to find a way of moving a sub menu item (ex. Menus) as a main menu button. Any idea on that?
- 0
- 2011-02-13
- Adam
-
Nochnichtgetestet,aberprüfen Sie,ob durch Hinzufügen von 'nav-menus.php' zum Array das Arraynach oben verschoben wird.Haven't tested, but see if adding 'nav-menus.php' to the array moves it up.
- 0
- 2011-02-13
- Norcross
-
Unglücklicherweisenicht.Dies war dereine Teil,dermichnervte.Ichmöchtenur,dass die Menüs und Widgetsihreeigenen Schaltflächen sind,damitesfür Kundeneinfacherist.Vielen Dankfür den VersuchUnfortunately no. This has been the one part that has been bugging me. I just want to be able to have the menus and widgets be their own buttons so it is easier for clients. Thank you though for trying
- 0
- 2011-02-13
- Adam
-
@Norcross Dasistgroßartig,aberistesmöglich,es so anzupassen,dasses die Textdomänefür Übersetzungszweckeenthält?@Norcross This is great, but is it possible to adapt it so that it can include the text-domain for translation purposes?
- 0
- 2014-11-12
- Phill Healey
-
@PhillHealey Diese Funktionenthält überhaupt keine Daten zum Beschriften,sondernnur die Bestellung selbst.@PhillHealey this function doesn't contain any data for labeling at all, rather, just the order itself.
- 0
- 2014-11-12
- Norcross
-
@ Norcross Natürlich.Ichglaube,ich hatte zu viele Aufgabenim Kopf,alsich das schrieb.;-);@Norcross Of course. I think I had too many tasks being juggled in my head when I wrote that. ;-)
- 0
- 2014-11-13
- Phill Healey
-
Kleiner Hinweis.Ich denke,esist richtig undgenug,umtruefür den Hook `custom_menu_order` zurückzugeben.- `add_filter ('custom_menu_order','__return_true');` Die Reihenfolge kommt von`menu_order`.Small hint. I think it is right and enough to return true for the hook `custom_menu_order`. - `add_filter( 'custom_menu_order', '__return_true' );` The order comes from `menu_order`.
- 0
- 2015-03-30
- bueltge
-
Die Antwort von @ Ivan untenistbesser,da derintegrierte Filter `post_type_labels _ {$post_type}` verwendet wird,der saubererist.@Ivan's answer below is better since it uses the built in filter `post_type_labels_{$post_type}`, which is cleaner.
- 0
- 2018-02-20
- Ryan
-
- 2017-02-19
Um den Standardposttyp (odereinen anderen) umzubenennen,verwenden Sieeinfach den Filter
post_type_labels_{$post_type}
. Für den Standardpost
ist diespost_type_labels_post
. Imfolgenden Codefinden Sie die vollständige Liste der Beschriftungen (WP 4.7.1
). Siemüssennicht alles ändern.add_filter( 'post_type_labels_post', 'news_rename_labels' ); /** * Rename default post type to news * * @param object $labels * @hooked post_type_labels_post * @return object $labels */ function news_rename_labels( $labels ) { # Labels $labels->name = 'News'; $labels->singular_name = 'News'; $labels->add_new = 'Add News'; $labels->add_new_item = 'Add News'; $labels->edit_item = 'Edit News'; $labels->new_item = 'New News'; $labels->view_item = 'View News'; $labels->view_items = 'View News'; $labels->search_items = 'Search News'; $labels->not_found = 'No news found.'; $labels->not_found_in_trash = 'No news found in Trash.'; $labels->parent_item_colon = 'Parent news'; // Not for "post" $labels->archives = 'News Archives'; $labels->attributes = 'News Attributes'; $labels->insert_into_item = 'Insert into news'; $labels->uploaded_to_this_item = 'Uploaded to this news'; $labels->featured_image = 'Featured Image'; $labels->set_featured_image = 'Set featured image'; $labels->remove_featured_image = 'Remove featured image'; $labels->use_featured_image = 'Use as featured image'; $labels->filter_items_list = 'Filter news list'; $labels->items_list_navigation = 'News list navigation'; $labels->items_list = 'News list'; # Menu $labels->menu_name = 'News'; $labels->all_items = 'All News'; $labels->name_admin_bar = 'News'; return $labels; }
Wenn Sie Unterstützungbei der Internationalisierung wünschen,verwenden Sieeinfach
__( $text, $textdomain )
wiefolgt:$labels->name = __( 'News', 'textdomain' );
Ich habe den Filterin der Funktiongefunden:
get_post_type_labels()
auseiner Dateiwp-includes/post.php
:/** * Filter the labels of a specific post type. * * The dynamic portion of the hook name, `$post_type`, refers to * the post type slug. * * @since 3.5.0 * * @see get_post_type_labels() for the full list of labels. * * @param object $labels Object with labels for the post type as member variables. */ $labels = apply_filters( "post_type_labels_{$post_type}", $labels );
To rename default post type (or any other for that matter) just use filter
post_type_labels_{$post_type}
. For defaultpost
it will bepost_type_labels_post
. In the code below is the full list of labels (WP 4.7.1
). You do not have to change everything.add_filter( 'post_type_labels_post', 'news_rename_labels' ); /** * Rename default post type to news * * @param object $labels * @hooked post_type_labels_post * @return object $labels */ function news_rename_labels( $labels ) { # Labels $labels->name = 'News'; $labels->singular_name = 'News'; $labels->add_new = 'Add News'; $labels->add_new_item = 'Add News'; $labels->edit_item = 'Edit News'; $labels->new_item = 'New News'; $labels->view_item = 'View News'; $labels->view_items = 'View News'; $labels->search_items = 'Search News'; $labels->not_found = 'No news found.'; $labels->not_found_in_trash = 'No news found in Trash.'; $labels->parent_item_colon = 'Parent news'; // Not for "post" $labels->archives = 'News Archives'; $labels->attributes = 'News Attributes'; $labels->insert_into_item = 'Insert into news'; $labels->uploaded_to_this_item = 'Uploaded to this news'; $labels->featured_image = 'Featured Image'; $labels->set_featured_image = 'Set featured image'; $labels->remove_featured_image = 'Remove featured image'; $labels->use_featured_image = 'Use as featured image'; $labels->filter_items_list = 'Filter news list'; $labels->items_list_navigation = 'News list navigation'; $labels->items_list = 'News list'; # Menu $labels->menu_name = 'News'; $labels->all_items = 'All News'; $labels->name_admin_bar = 'News'; return $labels; }
If you want internationalization support, just use
__( $text, $textdomain )
like:$labels->name = __( 'News', 'textdomain' );
I found the filter in function:
get_post_type_labels()
from a filewp-includes/post.php
:/** * Filter the labels of a specific post type. * * The dynamic portion of the hook name, `$post_type`, refers to * the post type slug. * * @since 3.5.0 * * @see get_post_type_labels() for the full list of labels. * * @param object $labels Object with labels for the post type as member variables. */ $labels = apply_filters( "post_type_labels_{$post_type}", $labels );
-
Die Antwort von Norcross war zu der Zeit,als siegeschrieben wurde,vielleicht diebeste,aber diesistein weitaus saubererer Ansatz,bei demein nativer Filter verwendet wird,um dasgleiche Ergebnis zuerzielen.Norcross's answer may have been the best at the time it was written, but this is a far cleaner approach that uses a native filter to accomplish the same outcome.
- 2
- 2018-02-20
- Ryan
-
Nachdemich das Originalgeschrieben habe,stimmeich zu,dass dieser Filter vielbesserist.Having written the original, I agree this filter is much better.
- 2
- 2018-11-26
- Norcross
-
- 2011-02-12
Ich stimme zu. Die Datei
functions.php
bietet viel Flexibilität.Ich habeeinige der Funktionenbenötigt,die Siemit einer Kombination ausfunctions.php
-Filtern und dieses Plugin .Soweitich weiß,würde dieses Pluginbeide Probleme lösen undfunktioniert auchin Installationssituationenmit mehreren Standorten.Hoffe das hilft.
I agree.. The
functions.php
file gives lots of flexibility. I've needed some of the same functionality that you described with a combination offunctions.php
filters and this plugin.From what I can tell..this plugin would accomplish both of your issues and it works well in Multi-Site install situations too. Hope that helps.
-
Hoppla ... schieß,sorry,habegeradegesehen,dassich kein Plugin verwendenmöchte.Esgibt definitiv Möglichkeiten,die Registerkartennamen und Platzierungennurmit der Funktion.php zu übersetzen.Nachdemich diesen Wegeingeschlagen hatte (ich versuchte,dafür Plugin-frei zu sein),entschiedich,dass sich die zusätzliche Codierungeinfachnicht lohnt ... angesichts dereinfachen Verwendung dieses Plugins.Entschuldigung,ich habe diese Kriterien schoneinmal verpasst.Ooops...shoot, sorry, just saw the bit about not wanting to use a plugin. There are definitely ways to go about translating the tab names and placements with just the Functions.php. For me, after heading down this path (trying to be plugin-free for this) I decided that the extra coding just wasn't worth it...given how easy that plugin was to use. Sorry I missed that criteria before.
- 0
- 2011-02-12
- Ross
-
Kein Problem,Ross,ich werdeestrotzdem untersuchen.Vielen DankNo problem Ross, I am going to look into it anyway. Thanks
- 0
- 2011-02-13
- Adam
-
- 2011-02-12
Vielleichtmöchten Sie sich diese Frage
ansehenund die Klasse,die sie dort auf gist
erwähnenenthält Funktionen,nach denen Sie suchen
rename_admin_menu_section()
umbeispielsweise umzubenennen,ändern Sie Beiträgein Artikel
und Sie können das Erscheinungsmenüentfernen undeinen neuen Menüpunktfür die obere Seitefür
erstellenYou might want to look at this question
and the class they mention there on gist
which holds functions that you ara looking for
rename_admin_menu_section()
to rename for instance change Posts to Articles
and you can remove the appearances menu and create you new top page menu item for
-
- 2016-02-04
Norcross 'Beispiel obenist richtig,aberichbrauchte die Möglichkeit der Internationalisierung. Wennich den Ruf hätte,wäre diesein Kommentar unter Norcross 'Antwort,aber daich diesnichttue,werdeicheinfach dengeänderten Code hiereinfügen. 'i18n_context'istein beliebiger Namespacefür den Übersetzungskontext. Dies kannbeispielsweise der Name Ihres Plugins oder Themas sein.
function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = __('Contacts', 'i18n_context'); $submenu['edit.php'][5][0] = __('Contacts', 'i18n_context'); $submenu['edit.php'][10][0] = __('Add Contacts', 'i18n_context'); $submenu['edit.php'][15][0] = __('Status', 'i18n_context'); // Change name for categories $submenu['edit.php'][16][0] = __('Labels', 'i18n_context'); // Change name for tags echo ''; } function change_post_object_label() { global $wp_post_types; $labels = &$wp_post_types['post']->labels; $labels->name = __('Contacts', 'i18n_context'); $labels->singular_name = __('Contact', 'i18n_context'); $labels->add_new = __('Add Contact', 'i18n_context'); $labels->add_new_item = __('Add Contact', 'i18n_context'); $labels->edit_item = __('Edit Contacts', 'i18n_context'); $labels->new_item = __('Contact', 'i18n_context'); $labels->view_item = __('View Contact', 'i18n_context'); $labels->search_items = __('Search Contacts', 'i18n_context'); $labels->not_found = __('No Contacts found', 'i18n_context'); $labels->not_found_in_trash = __('No Contacts found in Trash', 'i18n_context'); } add_action( 'init', 'change_post_object_label' ); add_action( 'admin_menu', 'change_post_menu_label' );
Norcross's example above is right on, but I needed the possibility of internationalization. If I had the reputation, this would be a comment under Norcross's answer, but since I don't, i'll just put the modified code here. 'i18n_context' is an arbitrary namespace for the translation context, this could be the name of your plugin or theme for example.
function change_post_menu_label() { global $menu; global $submenu; $menu[5][0] = __('Contacts', 'i18n_context'); $submenu['edit.php'][5][0] = __('Contacts', 'i18n_context'); $submenu['edit.php'][10][0] = __('Add Contacts', 'i18n_context'); $submenu['edit.php'][15][0] = __('Status', 'i18n_context'); // Change name for categories $submenu['edit.php'][16][0] = __('Labels', 'i18n_context'); // Change name for tags echo ''; } function change_post_object_label() { global $wp_post_types; $labels = &$wp_post_types['post']->labels; $labels->name = __('Contacts', 'i18n_context'); $labels->singular_name = __('Contact', 'i18n_context'); $labels->add_new = __('Add Contact', 'i18n_context'); $labels->add_new_item = __('Add Contact', 'i18n_context'); $labels->edit_item = __('Edit Contacts', 'i18n_context'); $labels->new_item = __('Contact', 'i18n_context'); $labels->view_item = __('View Contact', 'i18n_context'); $labels->search_items = __('Search Contacts', 'i18n_context'); $labels->not_found = __('No Contacts found', 'i18n_context'); $labels->not_found_in_trash = __('No Contacts found in Trash', 'i18n_context'); } add_action( 'init', 'change_post_object_label' ); add_action( 'admin_menu', 'change_post_menu_label' );
-
Warum haben Sie der anderen Antwort keine Bearbeitung vorgeschlagen?Why didn't you suggest an edit to the other answer?
- 0
- 2016-02-04
- fuxia
-
Nun,ich kannnoch keinen Kommentar abgeben. Außerdem dachteich,dassein Ausschneiden und Einfügennützlich sein könnte,falls Norcrossesbearbeitenmöchte.well i can't comment yet... also i thought a cut and paste could be useful in the case Norcross does want to edit it.
- 0
- 2016-02-05
- nimmolo
Ich habe den letzten Tag damit verbracht,die Dateifunctions.php zu verwenden,um WordPress vollständigfürmeine Client-Sites anzupassen.Ichbin erstaunt,wie vielicherreichen konnte und wie vieleinfacheresfürmeine Kunden wird.
Ich habebestimmte Menüelementefür Benutzerentfernt,dienicht als Administrator angemeldet sind.Ich hoffe (undnach dem,wasichgelesen habe,dassesmöglichist),einen Weg zufinden,umeinige der Menüpunkte umzubenennen (linke Seitenleisteim Admin-Bereich).Ändern Siebeispielsweise Beiträgein Artikel.
Wennjemand den Codefür die Dateifunctions.phpbereitstellen odermichin die Richtung weisen kann,würdeichmich sehr darüberfreuen!