web-dev-qa-db-fra.com

Liste des pages enfants par slug not ID?

Je cherche à utiliser la fonction wp_list_pages pour afficher les pages enfants d'un identifiant de page spécifique. J'ai été capable de le faire facilement, mais maintenant, j'ai trouvé un problème avec cela. Je gère un réseau de sites Wordpress (8 au total). J'essaie de le configurer là où je n'aurai besoin que de 2 dossiers de thèmes, car il existe 2 blogs principaux avec 3 sites secondaires. J'essaie donc de faire autant d'appels dynamiques que possible dans mes fichiers de thèmes pour éviter la duplication de thèmes pour chaque site.

Dans ma barre latérale, j'utilise le code suivant:

<ul>
<?
    wp_list_pages('orderby=name&depth=1&order=DESC&show_count=0&child_of=10&title_li=');
?>
</ul>

Le problème auquel je me heurte est que, sur chacun des sous-sites, les identifiants de page ont changé, mais la plupart du temps, mon sitemap n'a pas changé. Ainsi, sur mon site principal, child_of = 10 affiche les sous-pages appropriées dans ma barre latérale, mais dans mes sous-sites, child_of = 10 est une page différente, de sorte que les pages enfants appropriées ne s'affichent pas. J'ai eu un problème similaire avec le fait de rentrer des postes, mais j'ai pu faire ce qui suit:

<?
    $category = get_category_by_slug('news');
    wp_list_categories('orderby=name&order=DESC&show_count=0&exclude=53&title_li=&child_of='.$category->term_id);
?>

J'essaie de réaliser une solution similaire pour wp_list_pages où j'utilise un slug de page pour identifier les pages enfants à la place de l'ID de page. J'ai fouillé et essayé quelques articles que j'ai trouvés sur Google/ici mais pas de chance. En espérant que quelqu'un puisse m'aider.

1
Danny

Pourquoi n'utilisez-vous pas get_page_by_title() pour obtenir l'objet de page, puis transmettez son ID en tant que paramètre child_of?

Si vous préférez utiliser le slug réel, alors get_page_by_path( $slug ) devrait faire l'affaire.

Alors:

if ( $page = get_page_by_path( 'your-page-slug' ) ){
  wp_list_pages( 'orderby=name&depth=1&order=DESC&show_count=0&child_of=' .$page->ID . '&title_li=' );
}
1
Tom Auger