wp_cache_get - иерархия меню страниц WordPress
Есть такая идея, шаблон для WordPress, который я использовал (StudioPress Theme) выводит в верхнем меню все страницы, включая иерархию, мне нужно немного изменить функцию, чтобы она выводила только страницы первого уровня, Вот исходный код, вытягивающий страницы (header.php):
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 запросом:
SELECT * FROM `wp_posts` WHERE post_type = 'page' LIMIT 0 , 30
Получил результат, узнал, что иерархия вся прописывается в колонке: post_parent, немного видоизменил запрос на выборку категорий в меню, т.е.:
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, чуть изменил код:
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;
}
Итак, сортировка страниц теперь будет осуществляться по проставленным из админки номерам страницы.