Как получить сообщение id из permalink (довольно URL)?
Вы должны быть в порядке с url_to_postid()
[см. документацию], которая находится в файле rewrite.php. Я использовал его в моем плагине в прошлом году, работает как прелесть.
Это работает для регулярных типов сообщений и пользовательских типов сообщений. url_to_postid() работает только для регулярных сообщений.
У меня есть специальная (& documented) функция для этого:
get_page_by_path( $page_path, $output, $post_type );
Получает страницу с указанием ее пути.
Где $page_path
есть
[...] эквивалент запроса "pagename", как в: "index.php? pagename = parent-page/sub-page".
См. Справочник по функциям/получить страницу по пути
Пример:
// 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');
$post_type
: codex.wordpress.org/Post_Types )
url_to_postid()
от 3.7.0
: теперь эта функция поддерживает пользовательские типы сообщений (см. Trac tickets #19744
, #25659
).
используйте
$postid = url_to_postid( $url );
чтобы извлечь идентификатор вложения.
Требуется, чтобы указанный URL был в формате example.com/?attachment_id=N
и не будет работать с полным URL-адресом, чтобы получить идентификатор из полного URL-адреса.
вы также можете попробовать это:
$post = get_page_by_path('cat',OBJECT,'animal');
cat - это тот, который вы ищете = постоянная ссылка; животное - это тип персонализированного сообщения,