it-swarm-es.com

¿Cómo generar una lista de páginas secundarias y usar algunos de sus campos personalizados?

Tengo una estructura de página como esta:

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

Me gustaría generar una lista de coches en la página Coches de todos los coches (que son páginas secundarias de Coches). ¿Cómo haría esto? La lista es básicamente un submenú que debería mostrar todos los autos en orden alfabético (nota, no necesito enlaces a los 'nietos' - Imágenes, información). También necesito capturar los datos del campo personalizado de cada página de auto, y poner eso al lado del enlace a la página ... ¿es eso posible?

1
cannyboy

Podría usar get_pages para hacer esto, así:

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

Una vez que llegue aquí, puede extraer sus campos personalizados y ponerlos en variables.

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

Yo usaría una declaración if de algún tipo para construir esos encabezados principales. Por ejemplo, usted podría hacer:

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

Es duro, pero creo que esto podría llevarte a un largo camino. Esencialmente, estás creando programáticamente tus encabezados y devolviendo todo para que se impriman. La clave es formatear todo y configurar sus condiciones correctamente.

1
nickmjones

La función wp_list_pages() puede darle una lista de sus páginas secundarias. Sin embargo, la captura de datos de campo personalizados de cada página requeriría una consulta separada y un poco más de trabajo. Pero he aquí un comienzo:

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

wp_list_pages( $args );

Esto le dará una lista de enlaces a todas las páginas secundarias de la ID de página 123. La especificación depth también es para evitar la recuperación de páginas de nietos.

Sin embargo, como dije antes, obtener datos de campo personalizados es un poco más complicado. Primero deberá obtener el ID de página de cada una de sus páginas secundarias (probablemente utilizando query_posts()) y almacenarlas en una matriz. Luego, recorrerá esa matriz y obtendrá los datos de campo personalizados de cada página por turno.

Así que es factible ... pero no puedo ofrecer una solución rápida desde lo alto de mi cabeza.

1
EAMann