2010-11-02 16 views
32

Comment obtenir l'ID poste de permalink (jolie url)?Comment obtenir l'ID de publication de permalink (jolie url)?

+1

@Yuliy: C'est probablement la meilleure réponse ici; Je suggère que vous en fassiez une réponse réelle et pas seulement un commentaire. :) – bcat

+0

@Yuliy je n'ai pas trouvé, pourriez-vous m'aider? –

+1

@Jeaffrey Gilbert - Pouvez-vous expliquer davantage ce que vous essayez d'accomplir? Il y a plusieurs «bonnes» réponses, mais chacune est différente et chacune dépend de votre situation et de ce que vous essayez d'accomplir. BTW, vous pouvez poster cette question sur le site soeur de SO WordPress Answers: http://wordpress.stackexchange.com. – MikeSchinkel

Répondre

47

Cela devrait aller avec url_to_postid() [see documentation] qui se trouve dans rewrite.php. Je l'ai utilisé dans un de mes plugins l'année dernière, fonctionne comme un charme.

+0

Ouais, merci mon pote! –

+6

Eh bien. C'est documenté maintenant, au moins. http://codex.wordpress.org/Function_Reference/url_to_postid – vmassuchetto

+4

Notez également que la documentation mentionne: "Notez que cela ne renvoie pas l'ID de publication pour les types de publications personnalisés." – Ash

7

J'ai une fonction dédiée (& documentée) pour que:

get_page_by_path($page_path, $output, $post_type); 

Récupère une page donnée son chemin.

$page_path est

[...] l'équivalent de la requête 'pagename', comme dans: 'index.php? = Pagename parent page/sous-page.

Voir Function Reference/get page by path

Exemple:

// Assume 'my_permalink' is a post. 
// But all types are supported: post, page, attachment, custom post type, etc. 
// See http://codex.wordpress.org/Post_Types 
get_page_by_path('my_permalink', OBJECT, 'post'); 
+0

Mais ne fonctionne pas sur les postes ... – Jake

+1

Vous avez juste besoin de définir le type de poste (voir l'argument '$ post_type': http://codex.wordpress.org/Post_Types) – mems

+0

Vous devriez le modifier. Votre réponse est le meilleur maintenant qu'ils ont ajouté le support pour custom_post_types et les messages ou au moins documenté il ... C'est la solution que j'utilise moi-même. Merci. – Jake

9

This œuvres pour les types de postes réguliers et les types de poste personnalisé. url_to_postid() ne fonctionne que pour les messages réguliers.

+1

s'il vous plaît ajouter plus d'un lien sous le mot "ceci" pour décrire ce qui se cache derrière le lien. –

1

url_to_postid() à partir de 3.7.0: Cette fonction prend désormais en charge les types de postes personnalisés (voir les tickets Trac #19744, #25659).

0

vous pouvez essayer aussi celui-ci:

$post = get_page_by_path('cat',OBJECT,'animal'); 

chat est celui que vous cherchez = le permalien; animal est le type de poste personnalisé,

0

s'il vous plaît utiliser

$postid = url_to_postid($url); 

retrive l'ID d'une pièce jointe.

Il est requis que l'URL fournie soit au format example.com/?attachment_id=N et ne fonctionne pas avec l'URL complète pour obtenir l'ID de l'URL complète.