Как да получа идентификатор на публикация от постоянна връзка (красив url)?
Как да получа идентификатор на публикация от постоянна връзка (красив url)?
Отговори (7)
Трябва да се справите с url_to_postid()
[вижте документацията], който се намира в rewrite.php. Използвах го в мой плъгин миналата година, работи като чар.
Имам специална (и документирана) функция за това:
get_page_by_path( $page_path, $output, $post_type );
Извлича страница по даден път.
Където е $page_path
[...] еквивалентът на заявката „име на страница“, както в: „index.php?име на страница=родителска-страница/подстраница“.
Вижте Справочник за функции/получаване на страница по път
Пример:
// 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)
- person mems; 28.03.2013
Това работи за обикновени типове публикации И персонализирани типове публикации. url_to_postid() работи само за обикновени публикации.
url_to_postid()
от 3.7.0
: Тази функция вече поддържа потребителски типове публикации (вижте Trac билети #19744
, #25659
).
Имам многосайтов 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;
}
можете да опитате и това:
$post = get_page_by_path('cat',OBJECT,'animal');
котката е тази, която търсите= постоянната връзка; животното е потребителският тип публикация,
Моля използвайте
$postid = url_to_postid( $url );
за извличане на идентификатора на прикачен файл.
Изисква се предоставеният URL адрес да бъде във формат example.com/?attachment_id=N
и няма да работи с пълния URL адрес, за да получи идентификатора от пълния URL адрес.