✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Меню адміністратора WordPress: зміна порядку підменю

22

Однією з особливостей роботи з API меню WordPress (тобто add_menu_page, add_submenu_page тощо) є те, що він не полегшує зміну порядку пунктів підменю.

Звичайно, для певних речей, таких як таксономії чи щось подібне, ви можете просто змінити порядок їх реєстрації. Але припустімо, що у вас є меню адміністратора WordPress, а потім кілька сторінок підменю під цим конкретним меню.

За замовчуванням WordPress створює меню верхнього рівня, а потім одразу створює пункт підменю під меню верхнього рівня, який посилається на ту саму сторінку. У багатьох випадках це може бути ідеальним.

Проте в деяких випадках ви можете змінити це.

Меню адміністратора WordPress

Приклад того, коли ви можете щось змінити, може бути таким:

  • У вас є меню верхнього рівня, яке призначене для пропонування параметрів після підключення до стороннього API,
  • Для стороннього API потрібен ключ API (або інша автентифікація), тому спочатку потрібно надати для цього налаштування,
  • Чому б не зробити перший пункт меню Налаштуваннями, а другий пункт меню — власне Інструментами API?

Звичайно, коли параметри не встановлено, корисно також відобразити повідомлення в головному меню інструментів API, що користувач повинен клацнути на сторінці налаштувань, щоб ввести свої налаштування.

Але це виходить за рамки цієї публікації. Наразі ось спосіб керувати зміною порядку меню з боку сервера. Спочатку код, потім пояснення.

<?php
add_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);
/**
 * Reorders the menu by placing the second item before the first item.
 */
function acmeReorderSubmenuItems()
{
    global $submenu;
    $newSubmenu = [];
    foreach ($submenu as $menuName => $menuItems) {
        if ('acme-api-tools' === $menuName) {
            $newSubmenu[0] = $menuItems[1];
            $newSubmenu[1] = $menuItems[0];
            $submenu['acme-api-tools'] = $newSubmenu;
            break;
        }
    }
}

Взагалі кажучи, я використовую це в контексті об’єкта простору імен, але для цієї публікації я відношу його до функції, яка існує в просторі імен.

Кілька речей, на які варто звернути увагу:

  • Я використовую хук custom_menu_order, який є ідеальним місцем для роботи з пунктами меню в WordPress,
  • Я шукаю підменю acme-api-tools у ключі $menuName змінної масиву $submenu ,
  • Я створюю масив $newSubmenu, а потім міняю елементи місцями та призначаю нове підменю існуючому підменю, визначеному ключем.

Є кілька зауважень – можливо, навіть проблем (або принаймні серйозних міркувань) – щодо цього підходу.

А саме, код очікує точно знати ключ, з яким ми хочемо працювати. У деяких випадках це добре, але якщо ви бажаєте змінити меню, для якого ви не знаєте ключа (наприклад, acme-api-tools ), тоді вам потрібно буде змінити це.

Далі, це також передбачає наявність лише двох пунктів меню для обміну. У наведеному вище випадку це досить просто, але якби їх було більше, то вам, швидше за все, знадобилася б функція, яка б переміщала речі та повертала новий масив.

Досить, щоб почати

Тим не менш, наведені вище функції повинні надати достатньо інформації принаймні про те, як почати це робити, якщо не більше, а потім про те, як маніпулювати видимим масивом підменю

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі