Récupérer l’ID d’un article à partir de son adresse URL
Découvrez la fonction WordPress url_to_postid() qui permet de récupérer l’ID d’un post en fonction de son adresse URL.
WordPress permet de récupérer les informations d’un article à l’aide de différentes fonctions. Parmi elles, il existe la fonction url_to_postid()
qui permet de retrouver l’ID d’un post à partir de son adresse URL.
Voici un exemple d’utilisation :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
// On récupère l'ID du post
$post_id = url_to_postid( 'http://example.com/mon-article/' );
// On récupère l'ensemble des informations du post
$post = get_post( $post_id );
[/pastacode]
Pour le moment, je n’ai pas trouvé de cas pratique pour cette fonction, mais il peut être important de la connaître en cas de besoin.
Si vous avez des idées d’utilisation, partagez-les en laissant un commentaire.
14 Commentaires
idée d’utilisation: un tooltip avec appel ajax pour afficher quelques infos au survol des liens internes…
@DMSR : En effet, c’est une très bonne idée. On survol le lien et on affiche une tooltip grâce à son adresse URL.
Ca me donne des idées pour un prochain tuto ^^
@DMSR : Oui et non, si dans un article tu as l’intention d’utiliser l’id du post pour récupérer quoique ce soit, mieux vaut poser en js l’ID du post pour le récupérer facilement.
Evitez de l’utiliser car elle est très gourmande, il faut vraiment que ça soit obligatoire.
Par exemple WordPress l’utilise pour savoir de quel ID de post vous provenez (referer http), ou encore dans les URLs de pingback, savoir si l’image attachée (attachment est un post type) est une image locale ou non (si elle a un ID, alors elle est locale) et enfin pour poster un commentaire en XML-RPC.
Voyez, c’est vraiment des cas spéciaux, rares et particuliers.
Merci à Jo de m’avoir fait découvrir cette fonction, je promets de ne pas l’utiliser rapidement ! Attention à toi Jo, chercher d’abord une alternative pour contourner cette fonction ;)
Merci pour cet article.
Récupérer les ID de mes articles m’intéressent beaucoup. En effet, je possède un site sur de l’actu foot, et j’ai pour ambition de me faire référencer dans Google News. Mais pour cela, il faut un ID dans les URLs. Chose que je n’ai pas faite au départ avec mon site.
Il faut donc que je fasse des redirections de mes URLs (sans les IDs) vers les nouvelles (que j’ai balisé avec un permalien personnalisé : %postname%-%post_id%.
Est-ce que vous pensez qu’il s’agit du même ID ?
Et si oui, voilà une bonne utilisation :)
Merci de vos réponses
Cool, donc je vais pouvoir l’utiliser; mais je dois mettre cette fonction ou pour récupérer les IDs ?
Je pense que je vais faire les redirection via le plugin “Redirection” car j’ai quelques 400 articles à rediriger.
Ma structure actuelle des URLs tu veux dire ? Pour le moment c’est %postname%.
@Germain : Oui, %post_id% correspond à l’ID de l’article.
Si c’est pour faire des redirections automatiques, je te conseille de le faire via des directives permanentes dans le fichier .htaccess.
C’est quoi ta structure actuelle ?
En effet, l’ID n’étant pas présent dans la structure actuel, ça risque d’être compliqué :/
Il faudrait faire un script qui crée toutes les directives dans un fichier .txt. Puis, il suffira de copier le contenu du fichier .txt dans le .htaccess
Bonjour,
Petit bémol, url_to_postid() NE FONCTIONNE PAS AVEC LES CUSTOM POST TYPE
J’ai vu quelque part que cela serait corrigé avec la version 3.7 de wp.
Bonjour,
Existe t’il une méthode pour faire l’inverse ?
En effet je possède des id d’articles, a partir de cela je peut afficher le titre, image… mais impossible pour moi d’avoir l’url.
sachant que je ne souhaite pas avoir l’id dans le titre et que je fait un affichage hors boucle WP donc pas de permalink =/
Merci de votre aide.
@Florian: Avec get_permalink tout simplement ;) => http://codex.wordpress.org/Function_Reference/get_permalink
En effet c’était simple ! merci bien.
Salut!
Je viens de tomber par hasard sur ce post et sur ce super site en fait.
J’ai utilisé cette fonction pour un de mes projets sous buddypress il y a 2 ans. A l’époque elle ne fonctionnait pas avec les CPT, mais c’est le cas depuis la version 3.7 (http://codex.wordpress.org/Function_Reference/url_to_postid)
Dans mon cas je m’en suis servi pour permettre aux utilisateurs de lier des articles les uns aux autres.
Ex ici : http://www.gumdust.com/video/dat-evo-x-stance-nation
En gros, comme évoqué plus haut, ça détecte l’ID du post interne et affiche un petit cartouche animé au survol du lien. C’est en effet très gourmand, mais avec du cache ça passe sans problème (peu de visites…).