如何从永久链接获取帖子ID(漂亮的网址)?
答案 0 :(得分:50)
你应该可以使用位于rewrite.php中的url_to_postid()
[see documentation]。去年我在我的插件中使用它,就像一个魅力。
答案 1 :(得分:9)
This适用于常规帖子类型和自定义帖子类型。 url_to_postid()仅适用于常规帖子。
答案 2 :(得分:8)
我有一个专门的(和记录的)功能:
get_page_by_path( $page_path, $output, $post_type );
检索给定其路径的页面。
$page_path
[...]相当于'pagename'查询,如:'index.php?pagename = parent-page / sub-page'。
请参阅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');
答案 3 :(得分:1)
url_to_postid()
的 3.7.0
:此功能现在支持自定义帖子类型(请参阅Trac票证#19744
,#25659
)。
答案 4 :(得分:0)
你也可以尝试这个:
$post = get_page_by_path('cat',OBJECT,'animal');
猫是你正在寻找的那个=永久链接;动物是自定义帖子类型,
答案 5 :(得分:0)
请使用
$postid = url_to_postid( $url );
以检索附件的ID。
要求提供的网址格式为example.com/?attachment_id=N
,并且无法使用完整网址从完整网址获取ID。
答案 6 :(得分:0)
我有一个多站点WP,因此一旦出于某些原因在某些博客url_to_postid()
中工作时浏览博客,而在其他相同类型的博客中,get_page_by_path()
则不会魅力。所以我是这样做的,虽然可能并不完美:
$parsed_url = wp_parse_url( $url ); // Parse URL
$slug = substr($parsed_url['path'], 1 ); // Trim slash in the beginning
$post_id = url_to_postid( $slug ); // Attempt to get post ID
if ( ! $post_id ) { // If it didn't work try to get it manually from DB
$post_query_result =
$wpdb->get_row("SELECT ID FROM {$wpdb->prefix}posts WHERE post_name = '{$slug}'");
$analog_id = (int) $post_query_result->ID;
}