如何从永久链接(漂亮的网址)获取帖子 ID?
问问题
52197 次
7 回答
59
您应该可以使用位于 rewrite.php 中的url_to_postid()
[参见文档]。去年我在我的一个插件中使用了它,就像一个魅力。
于 2010-11-02T08:12:08.033 回答
11
我有一个专门的(和记录的)功能:
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');
于 2011-02-22T14:38:01.673 回答
8
这适用于常规帖子类型和自定义帖子类型。url_to_postid()仅适用于常规帖子。
于 2012-02-23T23:11:04.540 回答
2
url_to_postid()
as of 3.7.0
:此功能现在支持自定义帖子类型(请参阅 Trac 票证#19744
,#25659
)。
于 2013-12-26T17:14:16.430 回答
1
我有一个多站点 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;
}
于 2019-06-21T07:39:21.033 回答
0
你也可以试试这个:
$post = get_page_by_path('cat',OBJECT,'animal');
cat 是您要寻找的那个=永久链接;动物是自定义帖子类型,
于 2013-12-26T17:33:56.387 回答
0
请用
$postid = url_to_postid( $url );
检索附件的 ID。
要求提供的 url 格式为example.com/?attachment_id=N
且不能与完整 URL 一起使用以从完整 URL 中获取 id。
于 2014-07-11T05:20:57.140 回答