web-dev-qa-db-fra.com

Comment produire un système de sous-pages dans Wordpress

Je suis actuellement débutant dans le développement Wordpress et je développe un thème personnalisé avec quelques types d'articles et fonctionnalités personnalisées. Dans la plupart des cas, il était assez facile de trouver les informations dont j'avais besoin sur Internet et dans le codex. J'importe un ancien système (propriétaire) obsolète (propriétaire) dans Wordpress et j'aimerais pouvoir conserver toutes les sous-pages de cet ancien système dans Wordpress afin de tirer parti de fonctionnalités et de plugins puissants. J'ai presque tout terminé, mais je suis un peu confus quant à la manière de produire un ordre hiérarchique pour les types de publication personnalisés.

J'ai Wordpress installé dans un sous-dossier (wordpress) à partir de la racine du domaine. J'ai une configuration en première page pour afficher la page d'accueil des thèmes qui regroupe les données d'autres systèmes. J'ai pu utiliser add_rewrite_rule pour que certaines pages fonctionnent correctement avec des URI propres.

Mon problème est le suivant: quelques systèmes sont générés automatiquement à partir d'une base de données séparée. Pour simplifier, je vais appeler ces systèmes services.

J'ai actuellement 2 services et il y en aura éventuellement plus. Le problème que j'ai est que chaque service devra avoir sa propre page avec ses propres sous-pages.

c'est-à-dire (page d'accueil): domain.com/services/aims domain.com/services/rcm

(sous-pages): domain.com/services/aims/list domain.com/services/aims/profile

domain.com/services/rcm/list domain.com/services/rcm/profile

Chaque système sera construit en utilisant la même fonctionnalité. La page de liste répertorie les fournisseurs pour chaque service, tandis que la page de profil affiche des informations détaillées sur chaque fournisseur.

Je souhaite également pouvoir publier des articles dans chaque système.

c'est-à-dire: domain.com/services/aims/articles/?(.+)? domain.com/services/rcm/articles/?(.+)?

Ma question est la suivante: cette fonctionnalité est-elle possible dans Wordpress? J'ai essayé d'utiliser des types de publication personnalisés pour que l'URI fonctionne, mais je ne savais pas comment implémenter les articles. Je sais que je peux utiliser query_vars pour afficher différents contenus de page, ce qui imitera ce que j'essaie de faire avec la liste et le profil, mais je ne vois pas comment autoriser la publication d'articles sur chaque service. J'aimerais utiliser les mêmes fichiers pour les services au lieu d'avoir à créer de nouveaux fichiers chaque fois qu'un service est ajouté.

L’effet recherché est que chaque service puisse publier du contenu sur lui-même pour le garder organisé, répertorier les fournisseurs dans une page de liste et afficher les détails de ce dernier. Je sais que j'aurai besoin d'une navigation personnalisée ajoutée aux pages et je suis sûr que c'est la partie la plus facile.

Est-ce que quelqu'un sait si c'est possible? Si oui, quelle approche serait la plus efficace?

Merci pour toute aide que vous pouvez apporter sur ce sujet. Aussi, désolé si le titre n'est pas assez bon ... Je n'arrivais pas à comprendre comment l'expliquer simplement.

1
Jeremy

J'ai pu résoudre ce problème en utilisant des types de publication personnalisés. J'ai créé un Services custom_post_type et une méta-boîte de modèles pour me permettre d'attribuer des modèles spéciaux aux pages.

La façon dont cela est implémenté est:

Les pages parent dans Services sont les services que nous offrons. Sous la page parent se trouve une liste qui utilise le modèle de page de liste pour ce type_post_personnalisé (affiche uniquement la liste de tous les enfants de la publication). J'ai ensuite écrit un script qui ajoutera les publications à la base de données (puisque les données se trouvent dans une base de données différente et que je souhaitais tirer parti du plan du site). La liste des sous-pages (profils) stocke le slug de page et le titre de la page avec un petit extrait. Je poste alors simplement le contenu (articles) dans la Services du parent dans lequel les publications doivent être.

Cela me permet d’avoir plusieurs services tout en pouvant personnaliser chaque modèle de service (page principale, liste, profil) et me permet de publier des articles sur chaque service. J'ai utilisé Breadcrumb NavXT pour avoir le fil d'Ariane dans les pages Services (Pour afficher la page Services au lieu de Accueil).

Je sais qu'il existe de nombreuses façons d'implémenter cela, mais je voulais garder le contenu Services à l'écart du contenu du site principal. C'est pourquoi je voulais utiliser un type_post_personnalisé. La seule chose qui m'a déçu, c'est que WordPress ne m'autorise pas à utiliser l'option de modèle personnalisé par défaut que vous avez généralement pour les pages (à l'aide de la balise de support d'attributs de page. Oui, j'avais 'hierarchical' => true et 'supports' => 'page-attributes'). J'ai fourni mon code de modèle personnalisé de type publication personnalisé au début de cette réponse pour aider les autres personnes confrontées au même problème.

0
Jeremy

Je pense que c'est définitivement possible. Je ne peux pas vous donner un exemple complet, mais voici quelques réflexions.

  • Vous pourriez probablement faire des services une taxonomie, puis ajouter un service reviendrait à ajouter un nouveau terme à la taxe.
  • vous pouvez faire des articles un type d'article personnalisé et associer chaque article à un terme de service pour l'attacher à ce service.
  • utilisez le filtre post_type_link pour générer les URL de chaque article publié dans le service associé. voir cette réponse pour un exemple.
  • vous pouvez également éventuellement transformer les sous-pages de service en un type de publication personnalisé. vous devrez peut-être jouer avec l'ordre dans lequel vous enregistrez les choses pour obtenir les règles de réécriture dans le bon ordre de priorité, ou vous devrez peut-être écrire certaines règles manuellement.
0
Milo