it-swarm-ru.tech

Как создать список дочерних страниц и использовать некоторые из их настраиваемых полей?

У меня есть структура страницы, как это:

-Home
-Cars
  -Volvo 640
   - Pics
   - Info
  -Porsche 911
   - Pics
   - Info

Я хотел бы создать список автомобилей на странице автомобилей всех автомобилей (которые являются дочерними страницами автомобилей). Как бы я это сделал? Список в основном представляет собой подменю, которое должно отображать все машины в алфавитном порядке (обратите внимание, мне не нужны ссылки на "внуков" - фото, информация). Мне также нужно получить данные настраиваемого поля с каждой страницы автомобиля и поместить их рядом со ссылкой на страницу ... это возможно?

1
cannyboy

Вы можете использовать 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;
        }
    }
?>

Это грубо, но я думаю, что это может проделать довольно долгий путь. По сути, вы программно создаете свои заголовки и возвращаете все для печати. Ключ форматирует все и правильно настраивает ваши условия.

1
nickmjones

Функция wp_list_pages() может предоставить вам список ваших дочерних страниц. Однако получение данных настраиваемого поля с каждой страницы потребует отдельного запроса и немного больше работы. Но вот начало:

$args = array(
    depth => '1',
    child_of => '123'
);

wp_list_pages( $args );

Это даст вам список ссылок на все дочерние страницы идентификатора страницы 123. Спецификация depth также запрещает извлечение страниц внука.

Как я уже говорил ранее, получить данные настраиваемого поля немного сложнее. Сначала вам нужно получить идентификатор страницы каждой из ваших дочерних страниц (возможно, с помощью query_posts()) и сохранить их в массиве. Затем вы пройдете по этому массиву и по очереди получите данные настраиваемых полей с каждой страницы.

Так что это выполнимо ... но я не могу предложить быстрое решение из головы.

1
EAMann