У меня есть структура страницы, как это:
-Home
-Cars
-Volvo 640
- Pics
- Info
-Porsche 911
- Pics
- Info
Я хотел бы создать список автомобилей на странице автомобилей всех автомобилей (которые являются дочерними страницами автомобилей). Как бы я это сделал? Список в основном представляет собой подменю, которое должно отображать все машины в алфавитном порядке (обратите внимание, мне не нужны ссылки на "внуков" - фото, информация). Мне также нужно получить данные настраиваемого поля с каждой страницы автомобиля и поместить их рядом со ссылкой на страницу ... это возможно?
Вы можете использовать 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()
) и сохранить их в массиве. Затем вы пройдете по этому массиву и по очереди получите данные настраиваемых полей с каждой страницы.
Так что это выполнимо ... но я не могу предложить быстрое решение из головы.