WordPress как на ладони

Как добавить разделитель в меню админки WordPress?

Не пойму как добавить разделитель в консоли.

Везде пишут про функцию add_admin_menu_separator(); но как я понимаю такой функции в wordpress просто нет.

2
Роман
5.9 лет назад
  • 1
    Kama9619

    NOTE: Смотрите также пример по этой теме: https://wp-kama.ru/hook/admin_menu#example_38771

    Да такой функции в WP нет, пишут про самописную функцию.

    Посмотрел я в сети как она выглядит, недоделанная какая-то, может позволить себе удалить элемент меню, если неправильно указать индекс. В общем переделал как нужно.

    /**
     * Добавляет разделитель в меню админки.
     * Проверяет наличие указанного интекса, если он есть увеличивает указанный индекс на 1.
     * Нужно это, чтобы не затереть существующие элементы меню, если указан одинаковый индекс.
     *
     * @param integer $position Индекс, в какое место добавлять разделитель
     *
     * @author kama
     * @ver 1.0
     */
    function add_admin_menu_separator( $position ){
    	global $menu;
    
    	static $index;
    	if( empty($index) ) $index = 1;
    
    	foreach( $menu as $mindex => $section ){
    
    		if( $mindex >= $position ){
    
    			while( isset($menu[ $position ]) ) $position += 1;
    
    			$menu[ $position ] = array( '', 'read', "separator-my$index", '', 'wp-menu-separator' );
    
    			$index++;
    			break;
    		}
    	}
    
    	ksort( $menu );
    }

    Код работает с глобальной переменной напрямую, поэтому он не может быть стабильным, в будущих версиях ВП он когда-то может перестать работать.

    Пример использования:

    Этот код можно вставить в functions.php темы.

    add_action( 'admin_menu', function(){
    
    	add_admin_menu_separator( 70 );
    
    	// дебаг посмотрим текущие индексы
    	// die( print_r(  $GLOBALS['menu']  ) );
    
    } );

    Получим:

    Cуть реализации

    WordPress хранит разделы меню в глобальном массиве $menu. Чтобы добавить разделитель, нужно добавить элемент в этот массив с индексом, который будет находиться между индексами других элементов, которые требуется разделить.

    Роман 5.8 лет назад

    Большое спасибо

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация