Comment fonctionne le routage sur wordpress?

12

Comment fonctionne le routage wp de base? J'ai du mal à comprendre ... Dans MVC, votre URL ressemble à mycontroller / myaction qui correspond à MyController - > myaction ()

Dans Drupal, il s'agit de index.php? q = mon chemin-client / bonjour, qui peut être associé à une fonction de votre choix qui renvoie un contenu "à thème" dans la présentation de votre thème.

Mais dans wp, je n’ai aucune idée de la façon dont les choses se font ... c’est? p = 1 alors? product = 1 ... j’ai cherché une documentation sur le flux de routage mais je n’en ai pas trouvé (Google renvoie tout simplement) articles sur les itinéraires personnalisés) .. Je veux d'abord comprendre les principes fondamentaux de l'acheminement de base.

    
posée yeahman 12.04.2014 - 09:46

1 réponse

17

Dans WordPress, les URL ne mappent pas sur les itinéraires. Ils mappent aux requêtes de base de données.

Lorsque vous utilisez WordPress dans le mode permaliens "par défaut", vous avez un ensemble de variables dans la requête URL principale, comme? p = 1 ou? page = 234 et ainsi de suite. Il y a aussi? S = search et beaucoup d'autres.

Si vous utilisez les "jolis" permaliens, un grand ensemble de règles appelé "règles de réécriture" est créé, qui mappe directement divers modèles d'URL sur ce même ensemble de paramètres d'URL. Ainsi, une URL du type / 2014/04/12 / example mapperait vers? Year = 2014 & month = 04 & day = 12 & postname = example ou similaire. Donc, ce qui suit s’applique à ceux-ci également, une fois ce mappage terminé.

Ces variables contrôlent essentiellement l'instance principale de la classe WP_Query. La classe WP_Query contient toutes les informations qui construisent la requête de base de données pour obtenir les "posts" de la base de données. Les différents paramètres qui y sont passés contrôlent le type de requête qu’il génère et les données qu’il reçoit.

Vous voyez, tout ce qui peut être affiché par WordPress est essentiellement un "post". Un blog est une série d'articles en ordre chronologique inversé. Une "page" est une publication statique avec un nom défini. Un "type de message personnalisé" est exactement ce que cela ressemble à, un "message" avec un type personnalisé que vous définissez. Toutes les requêtes principales pour afficher quoi que ce soit dans WordPress obtiennent un sous-ensemble de publications de la table wp_posts.

C'est le WP_Query qui fait ça. Et les paramètres de l'URL sont envoyés directement dans cette requête principale et utilisés là-bas.

Le thème détermine ensuite le modèle à utiliser en fonction du résultat de la requête. Si vous avez demandé / category / example, cela devient? Category_name = example, ce qui signifie que le tableau principal $ wp_query- > query_vars obtiendra ces informations et que WP_Query extraira les derniers posts X pour la catégorie "exemple", et il définira son drapeau is_category sur true.

Le chargeur de modèles s'exécutera après cela. Vérifiez que is_category () renvoie true et décide de choisir le modèle de catégorie. Il recherchera donc category-example.php et retombera dans category.php, etc. hiérarchie des modèles.

La question de savoir si vous souhaitez modifier le fonctionnement des URL est donc simple: souhaitez-vous modifier les URL ou leur mappage? Comme les URL ne sont pas mappées à des fonctions, elles sont mappées à des paramètres qui contrôlent la requête. Si vous souhaitez que l'URL modifie la requête principale, le processus est légèrement différent de celui utilisé si vous souhaitez qu'une URL spéciale exécute un code totalement différent.

Et pour répondre à votre question précise dans les commentaires: "n'y a-t-il pas des cas où vous ne voulez pas réellement afficher les messages?" Non, il n'y en a pas. Tout est un post. Tout le contenu est stocké dans des articles. Si vous souhaitez stocker du contenu ailleurs et être différent, vous pouvez le faire, mais c'est plus difficile car, honnêtement, ce n'est généralement pas nécessaire. Si vous avez un contenu spécial, créez un type de publication personnalisé, stockez votre contenu sous forme de publication avec ce type, mappez-le d'un modèle d'URL. Facile.

    
réponse donnée Otto 12.04.2014 - 12:08

Lire d'autres questions sur les étiquettes