Intereting Posts
Пользовательский тег Cloud Cloud отсутствует теги Лучший способ всегда загружать новейшую версию стороннего кода Кажется, что в вашей установке PHP отсутствует расширение MySQL, которое требуется WordPress Создайте список недавних записей пользовательских сообщений Как отобразить текущую биографию current_user Pagination не работает с single-{slug} .php, но отлично работает на странице- {slug} .php Виджет Javascript code (ajax) Добавление значков рядом с категориями в wp_nav_menu Я скрываю сайт с index.htm, но теперь я не могу добраться до index.php Добавить элемент в виджет Импортировать большое количество изображений с сервера Сохранить запись, создать динамическую папку в папке загрузки WordPress не отображает информацию о сообщении, отправленном из пользовательской формы администратора Не удалось войти в систему + Переадресовать цикл на мобильном телефоне Проблема с htaccess https 301

Добавить разделитель в подменю admin

Я хотел бы добавить разделитель в раздел подменю admin , а не в разделе верхнего уровня .

введите описание изображения здесь

Я думаю об использовании javascript и стилизации для выполнения этой работы, но мне было интересно, есть ли более простой метод, например, при добавлении разделителя в раздел меню верхнего уровня .

Я все еще экспериментирую на этом. Я предоставлю свой метод, как только я его заработаю.

[ОБНОВЛЕНО]

Solutions Collecting From Web of "Добавить разделитель в подменю admin"

Меню администратора и подменю

Перейдя по нему и расширив API-интерфейс ядра, чтобы разрешить разделение главного меню в пользовательских позициях, я быстро просмотрел файлы основного меню, выкинул черту из всего, что там, и нашел решение, которое позволяет использовать основной API также для настраиваемые подменю.

Результат

Так будет выглядеть наше меню после добавления разделителей.

Меню администратора и разделители подменю

Чтобы это произошло, просто добавьте небольшой плагин или выбросьте этот фрагмент в свой файл плагинов или functions.php. Вот пример плагина. Как вы можете видеть, вам нужно будет добавить родительскую страницу, где вы хотите, чтобы ваш разделитель появился. Затем вам нужно добавить идентификатор wp-menu-separator . Вы можете настроить видимость для пользователя, изменив свойство read -capability на любые другие элементы в этом меню. 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.

Чтобы следить за любыми обновлениями

Подпишитесь / запустите этот GitHub Gist . Я буду публиковать обновления только там.

 <?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; } с <?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; } 

Добавить разделитель меню администратора

Сепараторы, если этот вопрос задает этот вопрос, являются разделителями меню администратора, которые разделяют меню на разделы. По умолчанию он разделен на область «публикация» и «администрирование».

Плагин для спасения

Вот что мы будем иметь после этого: пользовательский разделитель.

введите описание изображения здесь

Я написал довольно простой плагин, который я запускаю как 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 и вы готовы к работе. Плагин автоматически обнаружит, что вы хотите добавить разделитель и преобразовать добавленный элемент меню в один.

 <?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; } с <?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; } 

ПРИМЕЧАНИЕ: может быть более подходящий способ сделать это, однако я просто покажу вам, как другой плагин подходит к этой проблеме.

Этот плагин является s2Member

введите описание изображения здесь

Как они достигают этого, путем добавления элемента страницы подменю непосредственно в элемент родительского меню;

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

Вы можете найти ссылку на это в самом плагине s2Member , если хотите проверить его на: plugins\s2member\includes\classes\menu-pages.inc.php стартовая line 138

Для справки о функции add_menu_page см.:

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

Выбор селектора 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' ); } 

[ОБНОВЛЕНО]

Это то, что я придумал. Ниже приведен пример того, как я буду делать это в разделе почтового меню :

(Спасибо @userabuser за советы)

 function add_submenu_separator( $menu_ord ) { global $submenu; // Create 'separator' array for submenu $submenuSep = Array ('<div class="separator"></div>', 'read', '#'); // Note: Use 'div' with class 'separator' to use // WP's built-in separator styling $offset = 2; // Position of separator // Insert separator into POST menu array $post = $submenu['edit.php']; $post = array_slice($post, 0, $offset, true) + array($submenuSep) + array_slice($post, $offset, NULL, true); $submenu['edit.php'] = $post; return $menu_ord; } add_filter( 'custom_menu_order', 'add_submenu_separator' ); 

Эта часть не нужна, но если вы хотите избавиться от тега на разделителе, вам, возможно, придется использовать javascript . Итак, добавьте следующее:

 // Add the script function submenu_scripts() { wp_enqueue_script('submenu_script', get_template_directory_uri().'/js/submenu_scripts.js', false, null); } add_action('admin_enqueue_scripts', 'submenu_scripts', 100); 

Вот как выглядит javascript, который я назвал submenu_scripts.js и поместил его в папку с именем js :

 (function($){ $(document).ready( function() { // Remove 'a' tag on submenu separators $('a div[class="separator"]').unwrap(); }); })(jQuery); 

Вот как это должно выглядеть:

введите описание изображения здесь