Удаление узлов панели администратора wp для определенных c ролей - $ wp_admin_bar-> remove_node ('string'); - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь удалить узлы из панели администратора wp (которая отображается во внешнем интерфейсе) для определенной роли c (менеджер магазина). Я успешно удалил узлы, но, к сожалению, он делает это для всех типов ролей.

Я имею в виду это: https://developer.wordpress.org/reference/classes/wp_admin_bar/remove_node/

Мне удалось удалить вся админ-панель, но клиент хочет, чтобы что-то легко входило и выходило из серверной части. Я не хочу, чтобы у них был доступ ко всем узлам.

Я использовал фильтр, чтобы полностью удалить полосу (что им не нужно). Я пробовал использовать «if ( current_user_can( 'shop_admin' ) ){» с кодом узла выше и продолжаю получать ошибки.

//Hide Admin bar front-end

add_filter( 'show_admin_bar', function( $show ) {
    if ( current_user_can( 'shop_admin' ) ) {
        return false;
    }
    return $show;
} );

Итак, у меня получилось вот так:

 //Remove WP-Admin front-end Nodes

/**
 * Remove WP logo and comments from the Toolbar.
 *
 * @param WP_Admin_Bar $wp_admin_bar WP_Admin Bar instance.
 */
function wpdocs_remove_nodes( $wp_admin_bar ) {
    // Remove items from the menu bar.
    add_filter( 'show_admin_bar', function( $show ) {
    if ( current_user_can( 'shop_admin' ) ) {
        $wp_admin_bar->remove_node( 'wp-logo' );  
        $wp_admin_bar->remove_node( 'comments' );
        $wp_admin_bar->remove_node( 'new-content' );
        $wp_admin_bar->remove_node( 'edit' );
        $wp_admin_bar->remove_node( 'litespeed-menu' );
        $wp_admin_bar->remove_node( 'theme-dashboard' );
        $wp_admin_bar->remove_node( 'customize' );
        $wp_admin_bar->remove_node( 'new_draft' );
        $wp_admin_bar->remove_node( 'updates' );
    }
        return $show;
}
add_action( 'admin_bar_menu', 'wpdocs_remove_nodes', 999 );

Ошибка: синтаксическая ошибка , неожиданное 'add_action' (T_STRING), ожидая ')'

Спасибо за ваше время!

1 Ответ

0 голосов
/ 21 июня 2020

Я не думаю, что вам здесь нужен дополнительный фильтр show_admin_bar, поэтому я обновил функцию, чтобы не использовать ее. Это также является причиной вашей ошибки, потому что она не закрывается должным образом:

<?php
/**
 * Remove WP logo and comments from the Toolbar.
 *
 * @param WP_Admin_Bar $wp_admin_bar WP_Admin Bar instance.
 */
function wpdocs_remove_nodes($wp_admin_bar)
{
  // Remove items from the menu bar.
  if (current_user_can('shop_admin')) {
    $wp_admin_bar->remove_node('wp-logo');
    $wp_admin_bar->remove_node('comments');
    $wp_admin_bar->remove_node('new-content');
    $wp_admin_bar->remove_node('edit');
    $wp_admin_bar->remove_node('litespeed-menu');
    $wp_admin_bar->remove_node('theme-dashboard');
    $wp_admin_bar->remove_node('customize');
    $wp_admin_bar->remove_node('new_draft');
    $wp_admin_bar->remove_node('updates');
  }
}
add_action('admin_bar_menu', 'wpdocs_remove_nodes', 999);

...