wake-up-neo.net

Wie entferne ich Elemente aus dem Menü + Neuer Admin?

Ich möchte das + Neue Admin-Menü so beschränken, dass nur das einzelne Untermenü "Veranstaltung" angezeigt wird. Grundsätzlich können die Benutzer auch andere Elemente erstellen, jedoch nicht über das Menü + Neu.

 +New Admin Menu 

Ich habe es bereits mit dem "Adminimize" -Plugin versucht, da dies die anderen Elemente entfernen kann, aber der neue Medienlink bleibt erhalten, wenn Sie direkt auf "+ Neu" klicken.

 +New Admin Menu - link still there 

Ich habe bereits eine andere Logik hinzugefügt, um Elemente aus dem linken Admin-Menü zu entfernen:

function remove_menus() {

    remove_menu_page('edit.php?post_type=mdocs-posts');
 }
 add_action('admin_menu', 'remove_menus');

Aber ich kann nicht verstehen, wie ich das + Neue ändere. Irgendwelche Hinweise?

Vielen Dank!

1
sailingthoms

Alles verstecken (Menü und Untermenü) -

function wpse_260669_remove_new_content(){
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu( 'new-content' );
}
add_action( 'wp_before_admin_bar_render', 'wpse_260669_remove_new_content' );

Um bestimmte Menü-/Untermenüpunkte auszublenden -

function wpse_260669_remove_new_content_items(){
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu( 'new-post' ); // hides post CPT
    $wp_admin_bar->remove_menu( 'new-product' ); // hides product CPT
    $wp_admin_bar->remove_menu( 'new-page' ); // hides page CPT
    $wp_admin_bar->remove_menu( 'new-media' ); // hides media
}
add_action( 'wp_before_admin_bar_render', 'wpse_260669_remove_new_content_items' );

Also ist die Grundregel -

function your_boo_bar_function() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu( 'your-unique-menu-id' );
}
add_action( 'wp_before_admin_bar_render', 'your_boo_bar_function' );

Neues Menü hinzufügen-

function wpse_260669_add_menu(){
    global $wp_admin_bar;
    $wp_admin_bar->add_node(
        array(
            'id'        => 'google-menu',
            'title'     => 'Google',
            'href'      => 'http://google.com',
            'parent'    => 'new-content', // so, it'll be set as a child of 'new-content'. remove this to use this as a parent menu
            'meta'      => array( 'class' => 'my-custom-class' ),
        )
    );

}
add_action( 'wp_before_admin_bar_render', 'wpse_260669_add_menu' );

Ein vorhandenes Menü aktualisieren-

Wenn Sie einen vorhandenen Menüeintrag aktualisieren möchten, fügen Sie einfach einen neuen Eintrag mit der ID Ihres gewünschten Menüs hinzu.

Verwenden Sie diesen Code, um + New ('content-new') zu aktualisieren.

function wpse_260669_update_menu(){
    global $wp_admin_bar;
    $wp_admin_bar->add_node(
        array(
            'id'    => 'new-content', // id of an existing menu
            'href'  => 'your_new_url_goes_here', // set new URL
        )
    );

}
add_action( 'wp_before_admin_bar_render', 'wpse_260669_update_menu' );

Wie bekomme ich Menü ID-

Am einfachsten ist es, das Element mit Firebug zu untersuchen und die ID zu ermitteln. Siehe diesen Screenshot-

 How to get menu ID 

Navigiere zu deinem gewünschten Menüpunkt und erhalte die Zeichenfolge neben wp-admin-bar-

6
mukto90

Um die Antwort von @ mukto90 zu verfolgen, wird der Symbolleiste im Folgenden ein Menü hinzugefügt, in dem die Knoten-ID (die Sie an $wp_admin_bar->remove_node() übergeben müssen) aller anderen Knoten in der Symbolleiste aufgeführt ist.

add_action ('wp_before_admin_bar_render', 'add_all_node_ids_to_toolbar'), 99999) ;

function
add_all_node_ids_to_toolbar ()
{
    global $wp_admin_bar ;

    if (!current_user_can ('manage_options')) {
        // allow only "admins" to have our menu
        return ;
        }

    $all_toolbar_nodes = $wp_admin_bar->get_nodes () ;

    if (empty ($all_toolbar_nodes)) {
        // there are no top-level nodes, so bail
        return ;
        }

    // add our top-level menu to the toolbar
    $our_node_id = 'node_ids' ;
    $args = array (
        'id' => $our_node_id,
        'title' => "Node ID's",
        ) ;
    $wp_admin_bar->add_node ($args) ;

    // add all current Toolbar items to their parent node or to our top-level menu
    foreach ($all_toolbar_nodes as $node) {
        $args = array (
            'id' => "{$our_node_id}_{$node->id}", // prefix id with "node_id_" to make it a unique id
            'title' => $node->id,
            ) ;

        if (!(isset ($node->parent) && $node->parent)) {
            // the node has no parent, so add it to our top-level menu
            $args['parent'] = $our_node_id ;
            }
        else {
            // the node has a parent, so add it as a child to appropriate node in our menu
            $args['parent'] = "{$our_node_id}_{$node->parent}" ;
            }

        $wp_admin_bar->add_node ($args) ;
        }

    return ;
}

Ein weiterer Ansatz besteht darin, die show_in_admin_bar -Eigenschaft von Beitragstypen zu nutzen. Wenn Beitragstypen registriert sind (sowohl integrierte als auch benutzerdefinierte Beitragstypen), wird angegeben, ob sie in das Symbolleistenmenü "Neu" aufgenommen werden sollen

$args = array (
    'show_in_admin_bar' => true|false,
    ) ;
register_post_type ('post_type_name', $args) ;

Wenn Sie sich für CPTs registrieren möchten, die nicht im Symbolleistenmenü "Neu" angezeigt werden sollen, setzen Sie einfach 'show_in_admin_bar' => false,. Wenn in show_in_admin_bar kein $args angegeben ist, wird standardmäßig der Wert von show_in_menu verwendet. Siehe register_post_type () für Details.

Wie wäre es mit den eingebauten? Sie können die unerwünschten Elemente folgendermaßen entfernen:

add_action ('wp_before_admin_bar_render', 'remove_from_toolbar_new') ;

function
remove_from_toolbar_new ()
{
    $allow_in_toolbar_new = array (
        'page', // if you don't want any built-ins, just make this an empty array
        ) ;

    $args = array (
        '_builtin' => true,
        'show_in_admin_bar' => true,
        ) ;
    foreach (get_post_types ($args, 'objects') as $post_type) {
        if (in_array ($post_type->name, $allow_in_toolbar_new)) {
            continue ;
            }

        $post_type->set_props (array ('show_in_admin_bar' => false)) ;
        }

    return ;
}

Siehe get_post_types () und WP_Post_Type :: set_props () für Details.

Soweit ich weiß, ist die einzige Möglichkeit, das Element "Benutzer" aus dem Menü "Neu" zu entfernen, die von @ mukto90 erwähnte Technik.