При добавлении новой страницы в WordPress – она автоматически добавляется в список страниц в её начале, в области, называемой “headermenu
” (если у неё нет “родителя“).
Гугление подсказало несколько плагинов, которые могут убрать “ненужные” страницы – но в данном случае это не сработало. Например – Exclude Pages и Advanced Category Excluder. Скорее всего, их назначение убирать страницы именно из списка страниц, формируемого, например, в Виджетах.
Тогда было решено пойти по “сложному” пути – и разобраться самому – как формируется список.
Допустим, у нас есть страница Test, которую мы хотим убрать из списка:
Тема, которая тут используется, называется gchrome.
Для начала – определим какой именно блок отвечает за формирование этого списка:
Теперь открываем файл темы, в данном случае это /usr/local/www/users/rtfm/rtfm.co.ua/wp-content/themes/gchrome/header.php
, и находим там div
, в котором создаётся это меню:
<div class="wrapper"> <div class='container'> <div class='headermenu span-24'>
И сразу в глаза бросается простая выборка из базы данных:
$menupages = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' AND post_parent = 0 ORDER BY menu_order ASC");
Дальнейшее – дело техники. Редактируем запрос, и “вырезаем” ненужную страницу, например так:
AND ID NOT IN (4564)
В результате получаем такую строку:
$menupages = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' AND post_parent = 0 AND ID NOT IN (4564) ORDER BY menu_order ASC");
ID
страницы указывается в её URL-е, который “короткая ссылка“, цифры после p=
. Можно отфильтровать по имени, например так:
AND post_title NOT LIKE 'Test'
Результат:
$menupages = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' AND post_parent = 0 AND post_title NOT LIKE 'Test' ORDER BY menu_order ASC");
Готово.
В конечном итоге – никаких новых плагинов, “мусора” в системе блога. Правда – есть нюанс “отката” этих изменений при обновлении темы (если она ещё обновляется…).