Pregunta

Estoy tratando de mostrar niños-páginas en un cierto orden, en una lista.

Este es el código de salida de las páginas como una lista:

$parent = $wp_query->post->ID;
wp_list_pages("title_li=&child_of=$parent&echo=1&sort_column=post_title" );

Ahora quiero mostrar las primeras cuatro de las páginas en un orden en particular:


  1. Resumen
  2. Información
  3. Grupos
  4. Entradas
  5. Otro Página
  6. Otra página

En otras palabras, Resumen , Información , Grupos , Ingresos debería ser mostrado en ese orden (siempre que existan) , y otras páginas siguientes. ¿Cómo iba a lograr eso? Me he dado cuenta que hay parámetros para incluir y excluir páginas usando wp_list_pages. Estos parámetros tienen números de identificación de páginas como variables, por lo que tal vez el pseudo-código es:


  1. hacer una serie de identificaciones de las páginas secundarias que incluyen resumen, la información, Los grupos, las entradas en sus títulos, y para éstos correctamente
  2. hacer una variedad de los ID de páginas secundarias que no incluyen las 4 páginas
  3. unirse a estas matrices conjuntamente
  4. imprimir el código HTML de la matriz de la página identificadores

¿Fue útil?

Solución

Sobre la base de sus comentarios aquí es otra opción, usando wp_list_pages y sin tener que utilizar matrices y tirando el contenido manualmente, estoy dejando de lado un montón de las opciones, sólo lo esencial.

<ul>
<?php
  $priority_pages = '5,1,3,7';
  wp_list_pages(array('include' => $priority_pages);
  wp_list_pages(array('exclude' => $priority_pages);
?>
</ul>

ya que, wp_list_pages, sólo te da los elementos <li>, puede utilizar esta función un par de veces para tirar todas las páginas que necesita. Así que ahora sólo se puede obtener las páginas que desea fuera de la parte superior y tire en el resto. Se puede utilizar todo el resto de las opciones para ordenar y filtrar el árbol como normal (Tenga en cuenta, como el uso de matrices en lugar de la cadena, código apariencia más limpia OMI).

Lea el href="http://codex.wordpress.org/Function_Reference/wp_list_pages#Include_Pages_in_List" rel="nofollow"> página para más opciones

Para obtener una lista de ID con lo que quieres.

<?php
  $my_wp_query = new WP_Query();
  $all_wp_pages = $my_wp_query->query(array('post_type' => 'page'));

  $parent = $wp_query->$post-ID;
  $children = $get_page_children($parent, $all_wp_pages);
?>

Lo que tenemos ahora es una matriz en $children con la información que necesitamos. Lo que haría en este momento es a través del bucle $children en busca de la post_title presentado para igualar lo que quiere, y la tienda que ID. Con estos tienda como una matriz, que sería capaz de usar los que tienen el incluir, excluir funciones de wp_list_pages

Así que no es 100% completo, pero le ayudará a empezar

<?php
  $priority_pages_a = array();
  foreach($children as $child) {
    if(strpos($child->post_title,"Summary") {
      $priority_pages_a[0] = $child->ID;
    } elseif (strpos($child->post_title,"Info") {
      $priority_pages_a[1] = $child->ID;
    }
  }

  $priority_pages = implode(",",$priority_pages_a);

?>

Lo que hemos hecho se crea una matriz que pone la identificación en el orden matriz que desea. Luego de que implosiona en una cadena separada por comas, para lo cual se puede utilizar el wp_list_pages para conseguir los que usted quiere / necesita.

El get_page_children no toca la base de datos, pero el obtener todas las páginas hace:. / Así que es un lavado

No he probado el código completo, pero debería funcionar.

También cuenta que hay un get_page_by_title, así que si los títulos son exactamente 'Resumen', entonces se puede usar para obtener la identificación, pero en su pregunta que dijeron que contiene, así que fui con esta ruta en su lugar.

Otros consejos

Los wp_list_pages () función acepta un argumento para 'columna_ordenación', el valor predeterminado es menu_order entonces POST_TITLE. Si quick_edit las páginas, se puede establecer el orden de cada página.

Usted podría tener 2 menús separados, como ya se menciona a sí mismo.

Utilice los list_pages dos veces. Una vez incluyendo sus páginas fijas y con el orden de los menús como parámetro. Y una vez usando excluir como un parámetro, excluyendo los elementos que utiliza en su primer menú. Sólo asegúrese de obtener en un solo UL.

Como alternativa, puede decidir hacer un list_pages para cada página por separado de las cuatro primeras páginas. No estoy seguro si esto se considera una solución pura o limpia, sin embargo.

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