it-swarm-pt.tech

Como atualizar uma lista de filhas e usar alguns de seus campos personalizados?

Eu tenho uma estrutura de página como esta:

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

Eu gostaria de gerar uma lista de carros na página Carros de todos os carros (que são páginas infantis de Carros). Como eu faria isso? A lista é basicamente um sub-menu que deve mostrar todos os carros em ordem alfabética (note que eu não preciso de links para os 'netos' - Pics, Info). Eu também preciso pegar os dados do Custom Field de cada página do carro e colocá-los ao lado do link para a página. Isso é possível?

1
cannyboy

Você poderia usar get_pages para fazer isso, assim:

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

Quando chegar aqui, você pode extrair seus campos personalizados e colocá-los em variáveis.

        $model_number = get_post_meta($item->ID, 'model_number', true);

Eu usaria uma declaração if de algum tipo para construir esses títulos principais. Por exemplo, você poderia fazer:

            if($model_number == true){
                echo stuff;
            } else {
                echo other stuff;
        }
    }
?>

É difícil, mas acho que isso pode te levar a um longo caminho. Essencialmente, você está construindo programaticamente seus títulos e retornando tudo para ser impresso. A chave é formatar tudo e acertar suas condições.

1
nickmjones

A função wp_list_pages() pode fornecer uma lista das suas páginas filhas. Agarrar dados de campos personalizados de cada página, no entanto, exigiria uma consulta separada e um pouco mais de trabalho. Mas aqui está um começo:

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

wp_list_pages( $args );

Isso fornecerá uma lista de links para todas as páginas filhas da ID da página 123. A especificação depth serve para evitar a recuperação de páginas netas.

Como eu disse antes, porém, obter os dados de campo personalizados é um pouco mais complicado. Você precisará primeiro obter o ID da página de cada uma de suas páginas filhas (provavelmente usando query_posts()) e armazená-las em uma matriz. Em seguida, você passará por essa matriz e obterá os dados do campo personalizado de cada página.

Então é factível ... mas não posso oferecer uma solução rápida para o topo da minha cabeça.

1
EAMann