it-swarm.com.de

Separator zum Admin-Untermenü hinzufügen

Ich möchte ein Trennzeichen zum Untermenü admin section hinzufügen, NOT im Abschnitt der obersten Ebene .

enter image description here

Ich denke darüber nach, Javascript und Styling zu verwenden, aber ich habe mich gefragt, ob es eine einfachere Methode gibt, wie zum Beispiel das Hinzufügen von einem Trennzeichen zum Menüabschnitt der obersten Ebene .

Ich experimentiere immer noch damit. Ich werde meine Methode bereitstellen, sobald sie funktioniert.

[AKTUALISIERTE]

5
Giraldi

Admin-Menü & Untermenü Trennzeichen

Nachdem ich darüber nachgedacht und die Kern-API so erweitert hatte, dass Hauptmenü-Trennzeichen an benutzerdefinierten Positionen zulässig sind, habe ich schnell die Kern-Menü-Dateien durchgesehen, alles Mögliche herausgeholt und eine Lösung gefunden, mit der die Kern-API auch für verwendet werden kann benutzerdefinierte Untermenü Trennzeichen.

Das Ergebnis

So wird unser Menü aussehen, nachdem wir die Trennzeichen hinzugefügt haben.

Admin menu and sub menu separators

Fügen Sie dazu einfach ein kleines Plugin hinzu oder werfen Sie dieses Snippet in Ihre Plugin-Datei oder in die Datei functions.php. Hier ist ein Beispiel-Plugin. Wie Sie sehen, müssen Sie die übergeordnete Seite hinzufügen, auf der Ihr Trennzeichen angezeigt werden soll. Dann müssen Sie den Bezeichner wp-menu-separator hinzufügen. Sie können die Sichtbarkeit für den Benutzer anpassen, indem Sie die Funktion read - auf die anderen Elemente in diesem Menü ändern. Der 11 ist nur die Priorität. Passen Sie es an die Stelle an, an der das Trennzeichen angezeigt werden soll innerhalb des Menüs.

<?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', '' );
}

Das Plugin selbst

Auch dieses Plugin kann als Plugin, Teil eines anderen Plugins oder (am besten) als Muplugin verwendet werden.

Updates folgen

Bitte abonnieren Sie/star diesen GitHub Gist . Ich werde Updates nur dort posten.

<?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

Fügen Sie ein Admin-Menü-Trennzeichen hinzu

Separatoren, wenn diese Frage dies betrifft, sind die Teiler des Admin-Menüs, die das Menü in Abschnitte unterteilen. Standardmäßig ist es in einen "Publish" - und einen "Administration" -Bereich unterteilt.

Plugin für die Rettung

Folgendes werden wir danach haben: Ein benutzerdefiniertes Trennzeichen.

enter image description here

Ich habe ein ziemlich einfaches Plugin geschrieben, das ich als Mu-Plugin laufe. Die Verwendung ist, wie Sie aus dem Beispiel ersehen können, sehr einfach und stimmt vollständig mit der internen API überein.

// @example
add_action( 'admin_menu', 'add_admin_menu_separator' );
function add_admin_menu_separator()
{
    add_menu_page( '', '', 'read', 'wp-menu-separator', '', '', '10' );
}

Laden Sie dieses Plugin einfach in Ihren Ordner mu-plugins oder plugins und Sie können loslegen. Das Plugin erkennt automatisch, dass Sie ein Trennzeichen hinzufügen möchten, und wandelt den hinzugefügten Menüeintrag in einen neuen um.

<?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

HINWEIS: Möglicherweise gibt es eine geeignetere Möglichkeit, dies zu tun. Ich zeige Ihnen jedoch nur, wie ein anderes Plugin dieses Problem angeht.

Das betreffende Plugin ist s2Member

enter image description here

Um dies zu erreichen, fügen Sie dem übergeordneten Menüelement selbst ein Untermenüseitenelement hinzu.

    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
     );

Sie können einen Verweis darauf im s2Member Plugin selbst finden, wenn Sie ihn unter folgender Adresse einsehen möchten: plugins\s2member\includes\classes\menu-pages.inc.php starting line 138

Zum Nachschlagen auf add_menu_page function siehe:

http://codex.wordpress.org/Function_Reference/add_submenu_page

1
userabuser

CSS Selector Lösung:

füge deinem Theme eine neue admin-styles.css-Datei hinzu mit:

.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
}

und laden Sie die Stile

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