Cómo generar una lista de páginas secundarias, y el uso de algunos de sus campos personalizados?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1235

  •  16-10-2019
  •  | 
  •  

Pregunta

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 los coches en la página de Coches de todos los coches (que son los niños páginas de coches). ¿Cómo puedo hacer esto? La lista es básicamente un submenú que debe mostrar todos los coches en orden alfabético (nota, que no necesito enlaces a los nietos '' - Fotos, Info). También tengo que tomar los datos de campos personalizados de cada página coche, y poner ese lado del enlace a la página .. es posible?

¿Fue útil?

Solución

Se puede 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 se llega a aquí, se puede sacar sus campos personalizados y ponerlos en las variables.

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

Yo usaría una declaración if de algún tipo para construir estas partidas superiores. Por ejemplo, podría hacer:

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

Es duro, pero creo que esto podría obtener un tiempo bastante largo maneras. Esencialmente, usted está construyendo mediante programación los encabezados y devolver todo para conseguir impresa. La clave está formateando todo y conseguir sus condiciones establecen derecha.

Otros consejos

La función wp_list_pages() le puede dar una lista de páginas a su hijo. Agarrando los datos del campo personalizado de cada página, sin embargo, requeriría una consulta independiente y un poco más de trabajo. Pero aquí hay un principio:

$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 página de identificación 123. La especificación depth es impedir la recuperación de páginas nieto también.

Como he dicho antes, sin embargo, obtener los datos del campo personalizado es un poco más complicado. Usted tendrá que obtener primero el ID de la página de cada una de sus páginas niño (probablemente utilizando query_posts()) y almacenarlos en una matriz. Después se le bucle a través de esa matriz y obtener los datos de campo personalizado de cada página a su vez.

Así que es factible ... pero no puede ofrecer una solución rápida de la parte superior de la cabeza.

Licenciado bajo: CC-BY-SA con atribución
scroll top