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


У меня такая структура страницы:

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

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

 1
Author: nobody, 2010-09-02

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;
        }
    }
?>

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

 1
Author: nickmjones, 2010-09-02 21:16:31

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

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

wp_list_pages( $args );

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

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

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

 1
Author: EAMann, 2010-09-02 19:16:25