web-dev-qa-db-fra.com

Comment Wordpress résout-t-il les permaliens en interne?

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?

4
Robin Westerlundh

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

2
Milo