管理メニューラベルの変更
-
-
たぶん、これを2つの異なる質問に分割する必要があります:*「管理メニュー項目の名前の変更」*と*「管理メニュー項目の順序の変更」*?これにより、質問に対するビューを増やすことができます.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
-
小さなヒント.フック `custom_menu_order`に対してtrueを返すのは正しくて十分だと思います.--`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' );
ファイル
wp-includes/post.php
から関数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
この質問 および
で言及されているクラス要点 あなたが探している機能を保持している
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' );
私は最後の日、functions.phpファイルを使用してクライアントサイト用にWordPressを完全にカスタマイズしました.私は自分がどれだけ達成できたか、そしてそれがクライアントのために物事をどれほど簡単にするかについて驚いています.
管理者としてログインしていないユーザーの特定のメニュー項目を削除しました.私が望んでいること(そして私が読んだことからそれができることを知っていること)は、いくつかのメニュー項目(管理領域の左側のサイドバー)の名前を変更する方法を見つけることです.たとえば、投稿を記事に変更します.
もし誰かがfunctions.phpファイルのコードを提供したり、私にその方向を教えてくれたら、私はそれを大いに感謝します!