web-dev-qa-db-ja.com

Adminサブメニューにセパレータを追加

管理者サブメニュー セクションに 区切り文字 を追加したいのですが、 トップレベルセクションにはありません

enter image description here

私はJavascriptとスタイリングを使って仕事をすることを考えていますが、 トップレベルメニューセクションへの区切り文字 を追加するときのようなもっと簡単な方法があるかどうか疑問に思いました。

まだ実験中です。それがうまくいったら私は私の方法を提供します。

[更新しました]

5
Giraldi

管理メニュー& サブメニュー セパレータ

それを見て、カスタムAPIポジションでメインメニューセパレータを使えるようにコアAPIを拡張した後、私はコアメニューファイルを素早く調べ、そこにあるものすべてから地獄を捨て、そしてコアAPIをも使えるようにするソリューションを見つけました。カスタムサブメニューセパレータ.

結果

これは、セパレータを追加した後のメニューの外観です。

Admin menu and sub menu separators

これを実現するには、単に小さなプラグインを追加するか、またはこのスニペットをプラグインファイルまたは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;
}
3
kaiser

管理メニューセパレータを追加する

この質問がこれをターゲットにしている場合、区切り文字はメニューをセクションに分ける管理メニューの区切り文字です。デフォルトでは、「公開」と「管理」の領域に分けられます。

救助のためのプラグイン

これがあとで作成するものです。カスタムセパレータ。

enter image description here

私は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;
}
5
kaiser

注:これを行うためのより適切な方法があるかもしれませんが、別のプラグインがこの問題にどのように対処するかを示しています。

問題のプラグインは s2Member です

enter image description here

これを実現する方法は、サブメニューページ項目を親メニュー項目自体に追加することです。

    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

1
Adam

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' ); }
0
Dankicity