管理者サブメニュー セクションに 区切り文字 を追加したいのですが、 トップレベルセクションにはありません 。
私はJavascriptとスタイリングを使って仕事をすることを考えていますが、 トップレベルメニューセクションへの区切り文字 を追加するときのようなもっと簡単な方法があるかどうか疑問に思いました。
まだ実験中です。それがうまくいったら私は私の方法を提供します。
[更新しました]
それを見て、カスタムAPIポジションでメインメニューセパレータを使えるようにコアAPIを拡張した後、私はコアメニューファイルを素早く調べ、そこにあるものすべてから地獄を捨て、そしてコアAPIをも使えるようにするソリューションを見つけました。カスタムサブメニューセパレータ.
これは、セパレータを追加した後のメニューの外観です。
これを実現するには、単に小さなプラグインを追加するか、またはこのスニペットをプラグインファイルまたはfunctions.phpに投入します。これがプラグインの例です。ご覧のとおり、区切り記号を表示する場所に親ページを追加する必要があります。それからあなたは識別子wp-menu-separator
を追加しなければなりません。 read
- 機能をこのメニューの他の項目にあるものに変更することでユーザの可視性を調整できます。 11
がまさに優先事項です。セパレータを表示する場所に合わせて調整します。 メニューの内側 。
<?php
defined( 'ABSPATH' ) OR exit;
/** Plugin Name: Example Admin Menu Separator */
add_action( 'admin_menu', 'add_admin_menu_separator' );
function add_admin_menu_separator()
{
add_menu_page( '', '', 'read', 'wp-menu-separator', '', '', '21' );
add_submenu_page( 'edit.php?post_type=page', 'wp-menu-separator', '', 'read', '11', '' );
}
やはりこのプラグインは、プラグイン、別のプラグインの一部、または(ベスト)mupluginとして使用できます。
/ star このGitHubの要旨を購読してください 。私は更新を投稿します のみ そこに。
<?php
defined( 'ABSPATH' ) OR exit;
/**
* Plugin Name: Admin Menu Separator
* Description: Adds a separator on whatver priority is needed.
*/
add_filter( 'parent_file', 'admin_menu_separator' );
function admin_menu_separator( $parent_file )
{
$menu = &$GLOBALS['menu'];
$submenu = &$GLOBALS['submenu'];
foreach( $submenu as $key => $item )
{
foreach ( $item as $index => $data )
{
// Check if we got the identifier
if ( in_array( 'wp-menu-separator', $data, true ) )
{
// Set the MarkUp, so it gets used instead of the menu title
$data[0] = '<div class="separator"></div>';
// Grab our index and temporarily save it, so we can safely overrid it
$new_index = $data[2];
// Set the parent file as new index, so core attaches the "current" class
$data[2] = $GLOBALS['parent_file'];
// Reattach to the global with the new index
$submenu[ $key ][ $new_index ] = $data;
// Prevent duplicate
unset( $submenu[ $key ][ $index ] );
// Get back into the right order
ksort( $submenu[ $key ] );
}
}
}
foreach( $menu as $key => $item )
{
if (
in_array( 'wp-menu-separator', $item )
AND 5 < count( $item )
)
{
$menu[ $key ][2] = 'separator0';
$menu[ $key ][4] = 'wp-menu-separator';
unset(
$menu[ $key ][5]
,$menu[ $key ][6]
);
}
}
return $parent_file;
}
この質問がこれをターゲットにしている場合、区切り文字はメニューをセクションに分ける管理メニューの区切り文字です。デフォルトでは、「公開」と「管理」の領域に分けられます。
これがあとで作成するものです。カスタムセパレータ。
私はmu-pluginとして実行する、とても単純なプラグインを書きました。例からわかるように、使い方は非常に簡単で、内部APIと完全に一致しています。
// @example
add_action( 'admin_menu', 'add_admin_menu_separator' );
function add_admin_menu_separator()
{
add_menu_page( '', '', 'read', 'wp-menu-separator', '', '', '10' );
}
このプラグインをあなたのmu-plugins
またはplugins
フォルダにロードするだけで準備完了です。プラグインは自動的にあなたがセパレータを追加し、追加されたメニュー項目を1つに変換したいことを検出します。
<?php
defined( 'ABSPATH' ) OR exit;
/**
* Plugin Name: Admin Menu Separator
* Description: Adds a separator on whatver priority is needed.
*/
add_filter( 'parent_file', 'admin_menu_separator' );
function admin_menu_separator( $parent_file )
{
$menu = &$GLOBALS['menu'];
foreach( $menu as $key => $item )
{
if (
in_array( 'wp-menu-separator', $item )
AND 5 < count( $item )
)
{
$menu[ $key ][2] = 'separator0';
$menu[ $key ][4] = 'wp-menu-separator';
unset(
$menu[ $key ][5]
,$menu[ $key ][6]
);
}
}
return $parent_file;
}
注:これを行うためのより適切な方法があるかもしれませんが、別のプラグインがこの問題にどのように対処するかを示しています。
問題のプラグインは s2Member です
これを実現する方法は、サブメニューページ項目を親メニュー項目自体に追加することです。
add_submenu_page(
$parent_slug, //parent menu slug to attach to
"", //page title (left blank)
//menu title (inserted span with inline CSS)
'<span style="display:block;
margin:1px 0 1px -5px;
padding:0;
height:1px;
line-height:1px;
background:#CCCCCC;"></span>',
"create_users", //capability (set to your requirement)
"#" //slug (URL) shows Hash domain.com/# incase of mouse over
);
plugins\s2member\includes\classes\menu-pages.inc.php
starting line 138
で検査したい場合は、 s2Member プラグイン自体でこれへの参照を見つけることができます。
add_menu_page 関数のリファレンス:
http://codex.wordpress.org/Function_Reference/add_submenu_page
CSSセレクタソリューション:
次のようにして、新しいadmin-styles.cssファイルをテーマに追加します。
.wp-submenu a[href="post-new.php?post_type=city"],
.wp-submenu a[href="post-new.php?post_type=region"] {
border-bottom:1px solid #ccc
}
.wp-submenu li:last-child a {
border-bottom:none
}
そしてスタイルをロードする
wp_register_style( 'my_admin_styles', trailingslashit( get_template_directory_uri() ) . 'admin-styles.css');
add_action( 'admin_print_styles', 'admin_styles' );
function admin_styles() { wp_enqueue_style( 'my_admin_styles' ); }