Изменение меток меню администратора
-
-
Может быть,вам следует разделить это на два разных вопроса: * «Переименование пунктов меню администратора» * и * «Изменение порядка пунктов меню администратора» *?Это поможет вам получить больше просмотров по вашему вопросу.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 ответ
- голосов
-
- 2011-02-12
Вот процесс изменения ярлыков (в моем примере я изменил сообщения на "контакты")
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' );
Чтобы изменить порядок меню,выполните следующие действия:
// 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');
У меня есть код для удаления элементов,но он глобально,а не зависит от уровня доступа пользователя
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
-
Отличное спасибо!Теперь мне просто нужно найти способ переместить элемент подменю (например,«Меню») в качестве кнопки главного меню.Есть идеи по этому поводу?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
-
Не тестировал,но посмотрите,сдвигает ли добавлениеnav-menus.php в массив его вверх.Haven't tested, but see if adding 'nav-menus.php' to the array moves it up.
- 0
- 2011-02-13
- Norcross
-
К сожалению нет.Это была единственная часть,которая меня беспокоила.Я просто хочу,чтобы меню и виджеты были отдельными кнопками,чтобы клиентам было проще.Спасибо за попыткуUnfortunately 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 Это здорово,но можно ли его адаптировать так,чтобы он мог включать текстовый домен для целей перевода?@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 эта функция вообще не содержит данных для маркировки,а просто сам заказ.@PhillHealey this function doesn't contain any data for labeling at all, rather, just the order itself.
- 0
- 2014-11-12
- Norcross
-
@Norcross Конечно.Я думаю,что когда я писал это,у меня в голове было слишком много задач.;-)@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
-
Небольшая подсказка.Я думаю,что это правильно и достаточно,чтобы вернутьtrue для хука custom_menu_order.- `add_filter ('custom_menu_order','__return_true');` Заказ поступает из `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
-
Ответ @ Ivan,приведенный ниже,лучше,поскольку он использует встроенный фильтр `post_type_labels _ {$post_type}`,который чище.@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
Чтобы переименовать тип сообщения по умолчанию (или любой другой в этом отношении),просто используйте фильтр
post_type_labels_{$post_type}
. Дляpost
по умолчанию это будетpost_type_labels_post
. В приведенном ниже коде представлен полный список этикеток (WP 4.7.1
). Необязательно все менять.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; }
Если вам нужна поддержка интернационализации,просто используйте
__( $text, $textdomain )
,например:$labels->name = __( 'News', 'textdomain' );
Я нашел фильтр в функции:
get_post_type_labels()
из файлаwp-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 );
-
Ответ Норкросса,возможно,был лучшим на то время,когда он был написан,но это гораздо более чистый подход,который использует собственный фильтр для достижения того же результата.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
-
Написав оригинал,я согласен,что этот фильтр намного лучше.Having written the original, I agree this filter is much better.
- 2
- 2018-11-26
- Norcross
-
- 2011-02-12
Я согласен ... Файл
functions.php
обеспечивает большую гибкость.Мне нужна была часть той же функциональности,которую вы описали,с комбинацией фильтровfunctions.php
и этот плагин .Насколько я могу судить ... этот плагин решит обе ваши проблемы,и он также хорошо работает в ситуациях с несколькими сайтами.Надеюсь,это поможет.
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.
-
Ой ... блин,извини,только что увидел бит о нежелании использовать плагин.Определенно есть способы перевести названия вкладок и их размещение только с помощью Functions.php.Что касается меня,после того,как я пошел по этому пути (пытаясь избавиться от плагинов для этого),я решил,что дополнительное кодирование того не стоит ... учитывая,насколько легко использовать этот плагин.Извините,я пропустил этот критерий раньше.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
-
Нет проблем,Росс,я все равно займусь этим.благодаряNo problem Ross, I am going to look into it anyway. Thanks
- 0
- 2011-02-13
- Adam
-
- 2011-02-12
Возможно,вы захотите посмотреть этот вопрос
и класс,который они там упоминают в gist
содержащий функции,которые вы ищете
rename_admin_menu_section()
переименовать,например,изменить сообщения на статьи
и вы можете удалить меню внешнего вида и создать новый пункт меню верхней страницы для
You 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
Приведенный выше пример Норкросса подходит,но мне нужна была возможность интернационализации. Если бы у меня была репутация,это был бы комментарий под ответом Норкросса,но,поскольку у меня нет,я просто помещу здесь измененный код.i18n_context - произвольное пространство имен для контекста перевода,например,это может быть имя вашего плагина или темы.
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' );
-
Почему вы не предложили изменить другой ответ?Why didn't you suggest an edit to the other answer?
- 0
- 2016-02-04
- fuxia
-
ну,я пока не могу комментировать ... также я подумал,что вырезание и вставка могут быть полезны в случае,если Норкросс захочет его отредактировать.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
Я потратил последний день на использование файлаfunctions.php для полной настройки WordPress для моих клиентских сайтов.Я поражен тем,как многого мне удалось достичь и насколько это упростит жизнь моим клиентам.
Я удалил некоторые пункты меню для пользователей,которые не вошли в систему как администратор.Я надеюсь (и из того,что я прочитал,знаю,что это возможно) найти способ переименовать некоторые элементы меню (левая боковая панель в области администрирования).Например,измените сообщения на статьи.
Если кто-нибудь может предоставить код для файлаfunctions.php или указать мне направление,я был бы очень признателен!