web-dev-qa-db-fra.com

Guidage avec The Loop pour CMS

Peut-être que j'y vais mal, mais c'est mon scénario ... J'aimerais utiliser WordPress comme un CMS plutôt que comme une plateforme de blogging. J'ai un site Web qui aura entre 25 et 50 pages et qui n'aura pas de messages.

Je cherche à développer mon propre thème, ce qui devrait être assez facile, mais je suis un peu confus quant à l’utilisation des fonctions The Loop.

Je comprends que:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

est utilisé pour une page qui extrait x nombre de messages. Toutefois, dans mon scénario, je souhaite uniquement extraire le contenu d'une page plutôt que x nombre de messages. Dois-je créer des requêtes SQL personnalisées?

Tous les exemples que je rencontre régulièrement utilisent The Loop for posts. Si je n'utilise que des pages statiques, dois-je même utiliser The Loop? Puis-je simplement utiliser l'URL unique pour extraire une page de la colonne publication de la base de données MySQL?

J'espère que cela a du sens.

2
markmilly

Strictement, il n'est pas nécessaire d'utiliser une boucle dans un modèle de page, mais cela ne fait pas de mal, le contenu de la page sera toujours chargé, la boucle ne s'exécutera qu'une seule fois car il n'y a qu'un seul post/page. De nombreux thèmes incluent une boucle dans les modèles de page, je suppose pour certains problèmes de compatibilité.

Si vous construisez votre modèle de page à partir de rien, vous n'avez pas besoin de lui ajouter de boucle, vous avez raison, wordpress obtiendra le bon contenu à partir de l'URL, mais vous devez toujours exécuter la fonction the_post () avant de l'utiliser. balises de gabarit telles que the_title (), the_content (), etc. Il suffit de placer le the_post () vers le haut du gabarit.

En espérant que cela vous semble logique, n'hésitez pas à demander si vous avez besoin de précisions supplémentaires.

2
Gioia Fueter

CONTENU INFORMATIONNEL

Les pages , comme les messages , sont stockées dans la base de données sous la forme post_types , la grande différence ici est que les pages vivent en dehors de la liste normale basée sur le temps. Vérifiez ce que dit le codex

Quelles sont les pages:

  • Les pages concernent un contenu moins dépendant du temps que les publications.
  • Les pages peuvent être organisées en pages et sous-pages.
  • Les pages peuvent utiliser différents modèles de page pouvant inclure des fichiers de modèles, des balises de modèles et d'autres types de code PHP.
  • Les pages peuvent comporter un ensemble plus complexe d'ajustements d'affichage facilement disponibles lors de l'utilisation de thèmes sophistiqués avec une personnalisation poussée.
  • Essentiellement, les pages sont destinées à un contenu autre que celui d'un blog. Il est possible de supprimer tout ou la plupart des publications d'une installation WordPress, et ainsi de créer un site Web non blog.

Quelles pages ne sont pas:

  • Les pages ne sont pas des publications, elles ne sont pas extraites d’œuvres de fiction plus importantes. Ils ne parcourent pas la page principale de votre blog. Des plugins WordPress sont disponibles pour changer les valeurs par défaut si nécessaire.
  • Les pages ne peuvent pas être associées à des catégories ni à des balises. La structure organisationnelle de Pages ne provient que de leurs interrelations hiérarchiques, et non de balises ou de catégories.
  • Les pages ne sont pas des fichiers. Ils sont stockés dans votre base de données, tout comme les messages. Bien que vous puissiez placer des balises de modèle et du code PHP dans un fichier de modèle de page, vous ne pouvez pas les insérer dans le contenu de la page ou de la publication sans un plug-in WordPress, comme Exec-PHP, qui écrase le processus de filtrage du code.
  • Les pages ne sont pas incluses dans le flux de votre site.
  • Les pages et les publications peuvent attirer l’attention de différentes manières par les humains ou les moteurs de recherche.
  • Les pages (ou une publication spécifique) peuvent être définies comme page de couverture statique si nécessaire avec un ensemble de pages séparé pour les dernières publications de blog, généralement nommé "blog".

Les pages sont principalement utilisées à des fins autres que de blogging et répondront parfaitement à vos besoins. Vous pouvez voir comment créer des modèles de page dans le codex.

VRAIE QUESTION

Pour répondre à votre question, toutes les informations saisies dans une page sont stockées dans la base de données, tout comme les articles, mais contrairement aux articles qui sont stockés sous le nom post_typepost, les pages sont stockées sous le nom post_typepage. Pour obtenir cela et afficher ces informations, vous devez interroger la base de données pour appeler ces informations.

Voici comment la requête principale détermine les informations à renvoyer lors du chargement d’une page, Extrait de Vue d'ensemble de la requête

Voici donc les étapes que WordPress utilise pour décider des articles ou des pages à afficher sur une page et les afficher:

  • Lorsqu'un visiteur clique ou saisit pour la première fois une URL pour une page de votre blog, WordPress commence par exécuter quelques fichiers de base (wp-config.php, wp-settings.php, etc.). Spécificités de l’ordre de chargement des fichiers, commencez à index.php et suivez la chaîne de fichiers car chaque fichier PHP inclut/nécessite des fichiers supplémentaires PHP (ou lisez cet excellent article sur humanhell.net )
  • WordPress charge et initialise les plugins que vous avez activés (appelle les actions initiales du plugin).
  • WordPress charge le "domaine texte" pour l'internationalisation, ainsi que le fichier functions.php du thème actuellement actif.
  • WordPress exécute la fonction wp () (dans wp-includes/functions.php), qui appelle $ wp-> main () ($ wp est un objet de la classe WP, définie dans wp-includes/class-wp.php ). Ceci dit à WordPress: -Parse l'URL dans une spécification de requête en utilisant WP-> parse_request () - plus à ce sujet ci-dessous.
  • Définissez toutes les variables is_ utilisées par les balises conditionnelles à l'aide de $ wp_query-> parse_query () ($ wp_query est un objet de la classe WP_Query, définie dans wp-includes/query.php). Notez que malgré le nom de cette fonction, dans ce cas, WP_Query-> parse_query n'effectue aucune analyse syntaxique pour nous, car cela est effectué auparavant par WP-> parse_request ().
  • Convertissez la spécification de requête en requête de base de données MySQL et exécutez la requête de base de données pour obtenir la liste des publications, dans la fonction WP_Query-> get_posts (). Enregistrez les articles dans l'objet $ wp_query à utiliser dans la boucle WordPress.
  • Traite les erreurs 404.
  • Envoyez les en-têtes HTTP du blog.
  • Configurez des variables pour la boucle WordPress.
  • WordPress charge votre modèle, détermine le fichier de modèle à utiliser en fonction de la hiérarchie des modèles et exécute ce fichier (essentiellement ce que votre fichier de modèle dit de faire). WordPress pourrait également exécuter l’un des fichiers de flux (tels que wp-rss2.php). En règle générale, le fichier de modèle ou de flux exécute la boucle WordPress pour imprimer des articles de blog ou une page statique.
  • Le modèle ou le fichier de flux imprimera probablement des liens permanents vers certaines archives, catégories ou publications à l'aide de fonctions WordPress intégrées.

Je comprends que:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

est utilisé pour une page qui tire x nombre d'articles, mais dans mon scénario, je veux seulement extraire le contenu d'une page plutôt que x nombre d'articles.

Donc, la réponse à cette question est que la boucle ne sort que les informations/données de la requête principale. C’est la requête principale qui récupère les données de la base de données et, comme indiqué précédemment, la requête principale récupère uniquement les informations en fonction de l’URL et du type de publication.

Dois-je créer des requêtes SQL personnalisées?

Non, la requête principale l'a déjà fait. Vous pouvez simplement utiliser the_post() pour obtenir cette information à partir de la requête principale (). Si vous devez faire des requêtes personnalisées, utilisez plutôt WP_Query . N'utilisez jamais vos propres requêtes SQL

Si je n'utilise que des pages statiques, dois-je même utiliser The Loop?

Ce n'est pas nécessaire, vous pouvez simplement utiliser the_post() pour afficher vos informations. Il est toutefois recommandé d’utiliser la boucle, car have_posts() déclenche la fin de la boucle lorsque celle-ci atteint la fin.

J'espère que cela explique autant de problèmes que vous pourriez avoir. Si je peux vous laisser avec cela, n'essayez jamais de réinventer la roue, mais cela ne signifie pas que vous ne pouvez pas améliorer la conception si ce jour vient. Mais pour l’instant, tenez-vous-en aux bases et utilisez presque toujours la boucle par défaut.

1
Pieter Goosen