Есть такая идея, шаблон для WordPress, который я использовал (StudioPress Theme) выводит в верхнем меню все страницы, включая иерархию, мне нужно немного изменить функцию, чтобы она выводила только страницы первого уровня, Вот исходный код, вытягивающий страницы:
Файл: header.php
1 2 3 4 5 6 7 8 9 |
function get_the_pa_ges() { global $wpdb; if ( ! $these_pages = wp_cache_get('these_pages', 'pages') ) { $these_pages = $wpdb->get_results('select ID, post_title from '. $wpdb->posts .' where post_status = "publish" and post_type = "page" order by ID'); } return $these_pages; } |
Есть решение:
Пришлось порыть интернет и порыться в базе, так как раньше сильно то в WordPress и его шаблонами и не работатал.
Чтобы узнать иерархию построения страниц воспользовался phpMyAdmin, и SQL запросом:
1 2 3 4 |
SELECT * FROM `wp_posts` WHERE post_type = 'page' LIMIT 0 , 30 |
Получил результат, узнал, что иерархия вся прописывается в колонке: post_parent
Немного видоизменил запрос на выборку категорий в меню, т.е.:
1 2 3 4 5 6 7 8 |
function get_the_pa_ges() { global $wpdb; if ( ! $these_pages = wp_cache_get('these_pages', 'pages') ) { $these_pages = $wpdb->get_results('select ID, post_title from '. $wpdb->posts .' where post_status = "publish" and post_type = "page" and post_parent = "0" order by ID'); } return $these_pages; } |
И…. Добился нужного результата, в меню выводятся страницы только первого уровня!
По запросу Валерия дополняю статью ( По первому вопросу от 04.02.2010), задача: изменить сортировку страниц, если им присвоены номера вывода.
Беру функцию, измененную выше (думаю все равно сортировать придется страницы только первого уровня), сортировка страниц прописана в колонке menu_order, чуть изменил код:
1 2 3 4 5 6 7 8 |
function get_the_pa_ges() { global $wpdb; if ( ! $these_pages = wp_cache_get('these_pages', 'pages') ) { $these_pages = $wpdb->get_results('select ID, post_title from '. $wpdb->posts .' where post_status = "publish" and post_type = "page" and post_parent = "0" order by menu_order'); } return $these_pages; } |
Итак, сортировка страниц теперь будет осуществляться по проставленным из админки номерам страницы.
Error thrown
Call to undefined function ereg()