Как создать список дочерних страниц и использовать некоторые из их настраиваемых полей?
У меня такая структура страницы:
-Home
-Cars
-Volvo 640
- Pics
- Info
-Porsche 911
- Pics
- Info
Я хотел бы создать список автомобилей на странице Автомобили всех автомобилей (которые являются дочерними страницами автомобилей). Как бы я это сделал? Список в основном представляет собой подменю, в котором должны отображаться все автомобили в алфавитном порядке (обратите внимание, мне не нужны ссылки на "внуков" - Фотографии, информация). Мне также нужно захватить пользовательские данные полей с каждой страницы автомобиля и поместить их рядом со ссылкой на страницу.. возможно ли это?
2 answers
Вы могли бы использовать get_pages
для этого, например:
<?php
$args = array(
'post_type' => 'page',
'child_of' => 7,
);
$postobj = get_pages($args);
foreach($postobj as $item){
$dir = get_bloginfo('template_directory'); // Theme directory
$title = $item->post_title;
$parent = $item->post_parent;
$id = $item->guid;
$name = $item->post_name;
Как только вы доберетесь сюда, вы можете вытащить свои пользовательские поля и поместить их в переменные.
$model_number = get_post_meta($item->ID, 'model_number', true);
Я бы использовал какое-нибудь утверждение if
для построения этих верхних заголовков. Например, вы могли бы сделать:
if($model_number == true){
echo stuff;
} else {
echo other stuff;
}
}
?>
Это грубо, но я думаю, что это может завести вас довольно далеко. По сути, вы программно создаете свои заголовки и возвращаете все для печати. Ключ заключается в форматировании всего и приведение в порядок ваших условий.
Функция wp_list_pages()
может предоставить вам список ваших дочерних страниц. Однако для получения пользовательских данных полей с каждой страницы потребуется отдельный запрос и немного больше работы. Но вот для начала:
$args = array(
depth => '1',
child_of => '123'
);
wp_list_pages( $args );
Это даст вам список ссылок на все дочерние страницы страницы с идентификатором 123. Спецификация depth
также предназначена для предотвращения извлечения страниц внуков.
Однако, как я уже говорил ранее, получить данные пользовательского поля немного сложнее. Сначала вам нужно будет получить идентификатор страницы каждую из ваших дочерних страниц (возможно, с использованием query_posts()
) и сохраните их в массиве. Затем вы пройдете по этому массиву и получите данные пользовательских полей с каждой страницы по очереди.
Так что это выполнимо... но я не могу предложить быстрое решение с самого начала.