2010-11-02 2 views
32

Как получить сообщение id из permalink (pretty url)?Как получить сообщение id из permalink (довольно url)?

+1

@ Юлий: Это, наверное, лучший ответ здесь; Я предлагаю вам сделать его реальным ответом, а не просто комментарием. :) – bcat

+0

@Yuliy Я не нашел, не могли бы вы помочь? –

+1

@Jeaffrey Gilbert - Можете ли вы объяснить больше того, что вы пытаетесь на самом деле выполнить? Существует несколько «правильных» ответов, но каждый из них отличается, и каждый будет зависеть от вашей ситуации и того, что вы пытаетесь выполнить. Кстати, вы можете опубликовать этот вопрос на сайте сестры SO WordPress Answers: http://wordpress.stackexchange.com. – MikeSchinkel

ответ

47

Все должно быть хорошо с url_to_postid() [see documentation], который находится в rewrite.php. Я использовал его в моем плагине в прошлом году, работает как шарм.

+0

Да, спасибо, помощник! –

+6

Ну. Это документировано сейчас, по крайней мере. http://codex.wordpress.org/Function_Reference/url_to_postid – vmassuchetto

+4

Следует также отметить, что в документации упоминается: «Обратите внимание, что это не возвращает идентификатор сообщения для пользовательских типов сообщений». – Ash

7

У меня есть специальная функция (& документированных) для этого:

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

Извлекает страницы с учетом его путем.

Где $page_path является

[...] эквивалент запроса 'Pagename', как: 'index.php? ИмяСтраницы = родитель-страницу/суб-страницу'.

См Function Reference/get page by path

Пример:

// 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

Но не работает на сообщениях ... – Jake

+1

Вам просто нужно определить тип сообщения (см. Аргумент '$ post_type': http://codex.wordpress.org/Post_Types) – mems

+0

Вы должны отредактировать это. Ваш ответ теперь лучше, что они добавили поддержку custom_post_types и сообщений или, по крайней мере, задокументировали это ... Это решение, которое я использую сам. Благодарю. – Jake

9

This работает для обычных видов почтовых и типов пользовательских почтовых. url_to_postid() работает только для обычных сообщений.

+1

, пожалуйста, добавьте ссылку ниже под словом «это», чтобы описать, что находится за ссылкой. –

1

url_to_postid() от 3.7.0: Эта функция теперь поддерживает пользовательские типы сообщений (см. Билеты Trac #19744, #25659).

0

вы можете попробовать это также:

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

кошка является тот, который вы ищете = постоянную ссылку; животное является таможенный пост типа,

0

используйте

$postid = url_to_postid($url); 

в retrive идентификатор вложения.

Требуется, чтобы указанный url был в формате example.com/?attachment_id=N и не будет работать с полным URL-адресом, чтобы получить идентификатор из полного URL-адреса.