管理メニューセクションの順序を変更しますか?
5 回答
- 投票
-
- 2010-09-02
こんにちは @BinaryBit:
あなたが少しイライラしているのも不思議ではありません.管理メニューは、WordPressコアを介した最も鈍くてイライラする実装の1つです.正直なところ、彼らがそのように設計したときに彼らが何を考えていたのかわかりません.
@EAMann は、WordPressで管理メニューがどのように機能するかを説明する 優れた 仕事をしました(私はそれについて読むことができればよかったのに) 4か月前... :)
それでも、それがどのように機能するかを理解した後、私は簡単なことをしようとしている間、頭をまっすぐに保つのに十分な時間を費やさずにそれを扱うことができませんでした. そのため、WordPress管理メニューの操作を簡素化および合理化するメニューAPIを構築しました.
WordPressの既存の構造と100%互換性があり、使用しているのは私だけなので、まだアルファ版です.まだ処理されていないユースケースがあると確信しています.ただし、ここにコードを投稿して、あなたや他の人が試してみることができるようにします.
ファイルをダウンロードして、テーマのディレクトリにドロップできます: wp-admin -menu-classes.php と以下は、テーマの
functions.php
ファイルで関数を呼び出す方法を示しています.<?php require_once('wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swap location of Posts Section with Pages Section rename_admin_menu_section('Media','Photos & Video'); // Rename Media Section to "Photos & Video" delete_admin_menu_section('Links'); // Get rid of Links Section $movie_tags_item_array = get_admin_menu_item_array('Movies','Movie Tags'); // Save off the Movie Tags Menu update_admin_menu_section('Movies',array( // Rename two Movie Menu Items and Delete the Movie Tags Item array('rename-item','item'=>'Movies','new_title'=>'List Movies'), array('rename-item','item'=>'Add New','new_title'=>'Add Movie'), array('delete-item','item'=>'Movie Tags'), )); copy_admin_menu_item('Movies',array('Actors','Add New')); // Copy the 'Add New' over from Actors renamed_admin_menu_item('Movies','Add New','Add Actor'); // Rename copied Actor 'Add New' to 'Add Actor add_admin_menu_item('Movies',array( // (Another way to get a 'Add Actor' Link to a section.) 'title' => 'Alt Add Actor ', 'slug' => 'post-new.php?post_type=actor', ), array(// Add Back the Movie Tags at the end. 'where'=>'end' )); add_admin_menu_item('Movies',$movie_tags_item_array,array(// Add Back the Movie Tags at the end. 'where'=>'end' )); delete_admin_menu_section('Actors'); // Finally just get rid of the actors section }
さらに、これらの関数は WordPress 3.1に含めることを(ベースとして)検討中です 運が良ければ、これらは標準になるかもしれません!
Hi @BinaryBit:
It's no wonder you are a bit frustrated; the admin menu is one of the most obtuse and frustrating implementations through WordPress core. Honestly, I don't know what they were thinking when they designed it that way.
@EAMann did an excellent job of explaining how the admin menus work in WordPress (I wish I had been able to read that about 4 months ago... :)
Still, after I figured it out how it worked I was still at a loss to work with it without devoting enough time to keep my head straight while I tried to do simple things. So that's why I built a Menu API that simplifies and streamlines working with the WordPress admin menu.
They are 100% compatible with WordPress' existing structures and still very much in alpha since I've been the only one using it. I'm sure there are use-cases they do not yet handle. But I'll post the code here for you and others to try out.
You can download the file to drop in your theme's directory here: wp-admin-menu-classes.php and what follows shows how you might call the functions in your theme's
functions.php
file:<?php require_once('wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swap location of Posts Section with Pages Section rename_admin_menu_section('Media','Photos & Video'); // Rename Media Section to "Photos & Video" delete_admin_menu_section('Links'); // Get rid of Links Section $movie_tags_item_array = get_admin_menu_item_array('Movies','Movie Tags'); // Save off the Movie Tags Menu update_admin_menu_section('Movies',array( // Rename two Movie Menu Items and Delete the Movie Tags Item array('rename-item','item'=>'Movies','new_title'=>'List Movies'), array('rename-item','item'=>'Add New','new_title'=>'Add Movie'), array('delete-item','item'=>'Movie Tags'), )); copy_admin_menu_item('Movies',array('Actors','Add New')); // Copy the 'Add New' over from Actors renamed_admin_menu_item('Movies','Add New','Add Actor'); // Rename copied Actor 'Add New' to 'Add Actor add_admin_menu_item('Movies',array( // (Another way to get a 'Add Actor' Link to a section.) 'title' => 'Alt Add Actor ', 'slug' => 'post-new.php?post_type=actor', ), array(// Add Back the Movie Tags at the end. 'where'=>'end' )); add_admin_menu_item('Movies',$movie_tags_item_array,array(// Add Back the Movie Tags at the end. 'where'=>'end' )); delete_admin_menu_section('Actors'); // Finally just get rid of the actors section }
What's more, these functions are even under consideration (as a base) for inclusion in WordPress 3.1 so if we're lucky these might even become standard!
-
APIへの*素晴らしい*追加!最初のカスタムメニューセクションを既存のフレームワークに追加するのに数か月かかりました(そのため、コードを多くのことを学びました)...しかし、APIははるかに直感的に使用できるようです!*Fantastic* addition to the API! It took me months to add my first custom menu section with the existing framework (which is why I studied the code do much) ... but your API seems much more intuitive to use!
- 0
- 2010-09-02
- EAMann
-
* @ EAMann *-ありがとう!何か提案をしたり、それを改善するために協力したりしたい場合は、このQ&Aを偶然目にした少数の人を除いて、誰にとっても簡単になるような何かを確立したいと思います.*@EAMann* - Thanks! If you want to offer any suggestions or even collaborate on improving it I'd love to get something established that could make it easier for everyone except for just the few who happen to see this Q&A.
- 0
- 2010-09-03
- MikeSchinkel
-
これはコアになりましたか、それとも管理者のメニュー項目の順序を操作するためにこれまたは同様のものがまだ必要ですか?did this make core or is this or something similar still required to manipulate the order of menu items in the admin?
- 0
- 2012-09-12
- Q Studio
-
私が見つけた限りでは、それはWP3.5に延期されましたAs far as i have found, it's been postponed to WP 3.5
- 0
- 2012-09-22
- pixeline
-
ちょっとマイク-wp_debugはこの関数でエラーをスローします:--------function swap_admin_menu_sections($from_section、$to_section){ $from_section=get_admin_menu_section($from_section); if($from_section) $from_section-> swap_with($to_section); $ sectionを返します. } --- 注意:未定義の変数:セクションHey Mike - wp_debug throws an error on this function: -------- function swap_admin_menu_sections($from_section,$to_section) { $from_section = get_admin_menu_section($from_section); if ($from_section) $from_section->swap_with($to_section); return $section; } --- Notice: Undefined variable: section
- 0
- 2012-10-11
- Q Studio
-
- 2012-12-20
これは古いスレッドだと思いますが、はるかに簡単なソリューションで更新する価値があると思います.これは3.5で動作し、他のバージョンではテストされていないことに注意してください.次のコードは、プラグインまたはfunctions.phpファイルに配置できます.
参照: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order .元のポスターのニーズに合わせて少し変更しました(ただし、彼が今までに解決策を見つけたことを願っています...).
// Rearrange the admin menu function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // Dashboard 'edit.php?post_type=custom_type_one', // Custom type one 'edit.php?post_type=custom_type_two', // Custom type two 'edit.php?post_type=custom_type_three', // Custom type three 'edit.php?post_type=custom_type_four', // Custom type four 'edit.php?post_type=custom_type_five', // Custom type five 'separator1', // First separator 'edit.php?post_type=page', // Pages 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments 'separator2', // Second separator 'themes.php', // Appearance 'plugins.php', // Plugins 'users.php', // Users 'tools.php', // Tools 'options-general.php', // Settings 'separator-last', // Last separator ); } add_filter('custom_menu_order', 'custom_menu_order'); // Activate custom_menu_order add_filter('menu_order', 'custom_menu_order');
ここにリストされていない管理メニューの項目は削除されません.メニューの下部に追加されます.
I realize this is an old thread, but I think it's worth updating with a MUCH easier solution. Please note that this works with 3.5 and has not been tested with any other version. The following code can be placed in a plugin or the functions.php file.
See: http://codex.wordpress.org/Plugin_API/Filter_Reference/menu_order. Modified slightly to suit the original poster's needs (though, I hope he found a solution by now...).
// Rearrange the admin menu function custom_menu_order($menu_ord) { if (!$menu_ord) return true; return array( 'index.php', // Dashboard 'edit.php?post_type=custom_type_one', // Custom type one 'edit.php?post_type=custom_type_two', // Custom type two 'edit.php?post_type=custom_type_three', // Custom type three 'edit.php?post_type=custom_type_four', // Custom type four 'edit.php?post_type=custom_type_five', // Custom type five 'separator1', // First separator 'edit.php?post_type=page', // Pages 'edit.php', // Posts 'upload.php', // Media 'link-manager.php', // Links 'edit-comments.php', // Comments 'separator2', // Second separator 'themes.php', // Appearance 'plugins.php', // Plugins 'users.php', // Users 'tools.php', // Tools 'options-general.php', // Settings 'separator-last', // Last separator ); } add_filter('custom_menu_order', 'custom_menu_order'); // Activate custom_menu_order add_filter('menu_order', 'custom_menu_order');
Any items in the admin menu that are not listed here won't be removed. They will be appended to the bottom of the menu.
-
はい、これははるかに優れています.また、サブメニュー項目を並べ替えるには、設定を解除してからリセットすることができます.Yes this is much better, also to re-order submenu items you can unset and then reset them.
- 1
- 2012-12-20
- Wyck
-
- 2010-09-04
プラグインを使用したくないことは理解していますが、単純にするために、JanisElstsのAdminMenuEditorプラグインを試してください.管理メニューを好きなように再配置します.メニュー項目を非表示にすることもできます.
I understand you don't want to use a plugin, but for pure simplicity, try the Admin Menu Editor plugin by Janis Elsts. Rearrange your admin menus any way you like; can also hide menu items.
-
このプラグインをマルチサイトインストールで試しました.最適に機能しますが、マルチサイトインストールがある場合は、すべてのサブサイトのオプションを手動で構成する必要があります.I tried this plugin in multisite installation .It works best.But we need to manually configure the options for every sub-site if we have multisite Installation.
- 0
- 2010-10-13
- user391
-
- 2012-11-08
メニュー項目を移動するには、グローバル
$menu
変数を使用するのが好きです.たとえば、[ページ]メニューをメニューの下部に移動する場合は、
functions.php
またはプラグインでこれを使用します.function admin_menu_items() { global $menu; $menu[102]=$menu[20];//make menu 102 be the same as menu 20 (pages) $menu[20]=array();//make original pages menu disappear } add_action('admin_menu', 'admin_menu_items');
[投稿]メニューと[リンク]メニューを入れ替えたい場合:
function admin_menu_items() { global $menu; $storemenu = $menu[15];//save links menu into $storemenu $menu[15] = $menu[5];//make links menu = posts menu $menu[5] = $storemenu; //make menu 5/posts = $storemenu/links } add_action('admin_menu', 'admin_menu_items');
このトリックを少し使用して、WP3.4.1でテストしました
To move menu items around, I like using the Global
$menu
variable.For example, if I wanted to move the "Pages" menu to the bottom of the menus, I would use this in
functions.php
or a plugin:function admin_menu_items() { global $menu; $menu[102]=$menu[20];//make menu 102 be the same as menu 20 (pages) $menu[20]=array();//make original pages menu disappear } add_action('admin_menu', 'admin_menu_items');
and if I wanted to swap the Posts and Links menus:
function admin_menu_items() { global $menu; $storemenu = $menu[15];//save links menu into $storemenu $menu[15] = $menu[5];//make links menu = posts menu $menu[5] = $storemenu; //make menu 5/posts = $storemenu/links } add_action('admin_menu', 'admin_menu_items');
Been using this trick a little while, just tested with WP 3.4.1
-
これは古い投稿ですが、最初のスニペットに関して、 `admin_menu_items`関数の最後の行で問題が発生しました.これは、` unset($menu [20]); `に置き換えることで修正されました.I know this is an older post but with regards to your first snippet I ran into an issue with the last line in the `admin_menu_items` function which was fixed by replacing it with `unset($menu[20]);`
- 0
- 2017-08-04
- hot_barbara
-
- 2012-03-05
すごい.どうもありがとうございます. 関数に数行のコードを挿入するだけです.php
require_once('/extras/wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swop location of Posts Section with Pages Section }
さらに、 wp-admin-menu-classes.php をテーマフォルダーに配置します. [投稿]ボタンは[ページ]ボタンと入れ替えられます.
これがすぐにコアの一部になり、2つのボタンを並べ替えるだけで関数内にメニュー全体を記述する必要がなくなることを願っています.
実際、4つのボタンの順序をより指定するのは少し注意が必要でした. 4つのボタンのを次のように変更するには:ページ、投稿、メディア、リンク 次のコードを使用する必要がありました:
swap_admin_menu_sections('Pages','Posts'); swap_admin_menu_sections('Media','Links'); swap_admin_menu_sections('Posts','Links');
Awesome. Thank you so much. I just put some lines of code into my functions.php
require_once('/extras/wp-admin-menu-classes.php'); add_action('admin_menu','my_admin_menu'); function my_admin_menu() { swap_admin_menu_sections('Pages','Posts'); // Swop location of Posts Section with Pages Section }
Plus placing the wp-admin-menu-classes.php in my theme folder and now the 'posts' button is swopped with the 'pages' button.
I hope this will become part of the core soon and in a way so that we don't need to write the whole menu within a function to just reorder two buttons.
In fact it was a bit tricky to get a more specified order for 4 buttons. In order to change the of 4 buttons to: Pages, Post, Media, Links I needed to use the folowing code:
swap_admin_menu_sections('Pages','Posts'); swap_admin_menu_sections('Media','Links'); swap_admin_menu_sections('Posts','Links');
運がなくてもこの非常に単純なタスクを実行しようとして数時間を費やした後、ここで少しイライラしています.
基本的に、作成した5つのカスタム投稿タイプがあります.やりたいのは、「ダッシュボード」のすぐ下にそれぞれを特定の順序で表示することだけです.
WordPressのドキュメントから、メニューの最高順序が「5」であるため、実際にはこれを実行できないようです.そして上記 L
これを読んでいる専門家の中には、関数ファイルを利用し、プラグイン(存在することがわかっている)を利用せずに、管理メニューを希望どおりに注文できる簡単な方法を教えてくれると思います.
先に進んで、5つの個別の投稿タイプを作成し、ダッシュボードのすぐ下に特定の順序で含めてみてください...これは不可能のようです.?? ...これを行うためのjqueryハックのタイプはありますか誰かが私と共有できる、またはできればjQueryを使用せずに共有できる作業ですか?