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.
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.
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:
Quelles pages ne sont pas:
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_type
post
, les pages sont stockées sous le nom post_type
page
. 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.