Je suis en train de modifier en profondeur le système de réécriture et les post_types personnalisés, mais avant de continuer, je dois savoir comment WordPress gère les réécritures.
J'ai trouvé la fonction url_to_postid () mais WordPress ne veut pas l'utiliser pour résoudre des liens permanents dans des requêtes?
Par exemple: si j'accroche aux fonctions pre_get_post et navigue dans une page ou un post_type personnalisé, la requête fournie inclut désormais "is_page" ou "pièce jointe", etc. Où WordPress détermine-t-il si l'URL est une page | type de page | pièce jointe ou non? Et comment puis-je m'y accrocher?
Si vous consultez la référence de l'action , vous verrez toutes les actions exécutées avant le pre_get_posts
. Les deux que vous voudrez probablement étudier sont parse_request
et parse_query
(oui, ceux-ci manquent dans la documentation).
La partie qui vous intéresse le plus est probablement parse_request
, où les règles de réécriture sont comparées à l'URI demandé. Vous pouvez voir le source ici .
Lorsqu'une requête frontale se produit, le fichier wp-blog-header.php
est chargé et appelle wp()
, qui appelle la méthode main()
DE LA CLASSE WP
}, qui appelle la méthode parse_request()
. . Au bas de cette fonction, vous aurez voir où l'action parse_request
est exécutée .
EDIT
Voir également cette page du Codex pour plus d’informations plus détaillées: Aperçu de la requête