Question

Je suis en train de montrer enfants-pages dans un certain ordre, dans une liste.

Ceci est mon code de sortie des pages comme une liste:

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

Maintenant, je veux montrer les quatre premières pages dans un ordre particulier:


  1. Résumé
  2. Info
  3. Groupes
  4. Entrées
  5. Autre page
  6. Une autre page

En d'autres termes, Résumé , Info , Groupes , Entrées doit être indiqué dans cet ordre (à condition qu'ils existent) , et d'autres pages ci-dessous. Comment puis-je obtenir cela? Je l'ai remarqué il y a des paramètres à inclure et exclure les pages en utilisant wp_list_pages. Ces paramètres prennent les numéros de page d'identification en tant que variables, donc je peut-être le pseudo-code est:


  1. faire un tableau des ID des pages enfants qui comprennent Résumé, Info, Pour les groupes, entrées dans leurs titres, et pour ceux-ci correctement
  2. faire un tableau des ID des pages enfants qui ne comprennent pas les 4 pages
  3. joindre ces tableaux ensemble
  4. imprimer le code html du tableau de la page ID

Était-ce utile?

La solution

Sur la base de vos commentaires est une autre option ici, en utilisant wp_list_pages et sans avoir à travailler avec des tableaux et de contenu en tirant manuellement, je quitte un groupe des options, juste l'essentiel.

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

depuis, wp_list_pages, vous donne juste les éléments <li>, vous pouvez utiliser cette fonction deux fois de tirer toutes les pages dont vous avez besoin. Alors maintenant, vous ne pouvez obtenir les pages que vous voulez sur le haut, puis tirez dans le reste. Vous pouvez utiliser tout le reste des options pour trier et filtrer l'arbre comme normal (Remarque, je comme l'utilisation de tableaux au lieu de la chaîne, ressemble un code plus propre OMI).

Lire le codex page pour wp_list_pages pour plus d'options

Pour obtenir une liste des numéros d'identification avec ce que vous voulez.

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

Ce que nous avons maintenant un tableau en $children les informations dont nous avons besoin. Ce que je à ce moment est une boucle à travers la recherche de la $children post_title déposé pour égaler ce que vous voulez, et magasin qui ID. Avec ces magasins comme un tableau, vous seriez en mesure d'utiliser ceux qui l'incluent, exclure les fonctions de wp_list_pages

pas 100% complet, mais il vous permettra de démarrer

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

?>

Ce que nous avons fait est créé un tableau qui met l'ID dans l'ordre du tableau que vous voulez. Puis implose que dans une virgule chaîne séparée, pour laquelle vous pouvez utiliser le wp_list_pages pour obtenir ceux que vous voulez / besoin.

Le get_page_children ne touche pas la base de données, mais obtenir toutes les pages ne:. / Il est donc un lavage

Je n'ai pas testé ce code tout à fait, mais il devrait fonctionner.

Notez également il y a un get_page_by_title, donc si vos titres sont exactement « Résumé », alors vous pouvez l'utiliser pour obtenir l'ID, mais dans votre question, vous avez dit contient, donc je suis allé avec cette route à la place.

Autres conseils

La fonction wp_list_pages () accepte un argument pour 'sort_column', cette valeur par défaut menu_order puis post_title. Si vous quick_edit les pages, vous pouvez définir l'ordre pour chaque page.

Si cela est un menu, je vous suggère de vous regardez le nouveau système de menu Nav dans Wordpress 3.0. Vous pouvez créer un menu de tout groupe de pages, messages ou même des liens externes.

Vous pouvez y accéder dans la section d'administration ? Menus à Apparence

Vous pouvez avoir 2 menus séparés, comme vous le mentionnez déjà vous.

Utilisez les list_pages deux fois. Une fois, y compris vos pages fixes et en utilisant l'ordre de menu comme paramètre. Et une fois à l'aide d'exclure comme paramètre, à l'exclusion des éléments que vous utilisez dans votre premier menu. Assurez-vous de les obtenir dans un UL.

Vous pouvez décider de faire un list_pages pour chaque page séparée des quatre premières pages. Je ne sais pas si cela est considéré comme une solution pure ou propre, cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top