Описание
Получает ID записи по переданному УРЛу.
Разбирает переданную "постоянную ссылку" и по ней пытается получить ID записи.
Эта функция является противоположной get_permalink().
Заметка: url_to_postid() не возвращает ID записи, для произвольных типов.
Функция возвращает ID поста/страницы или 0, если не удалось получить.
Использование
<?php $postid = url_to_postid( $url ); ?>
Параметры
- $url (строка) (обязательный)
- Постоянная ссылка (УРЛ), из которого нужно получить ID записи.
По умолчанию: нет
Примеры
1. Пример использвоания. Получим ID поста из постоянной ссылки:
$url = "http://site.ru/our-company/news/dinner-tcworld-2010.html"; $post_ID = url_to_postid($url); echo "ID поста = ". $post_ID;
url_to_postid()
из файла: /wp-includes/rewrite.php WP 3.3.2function url_to_postid($url) {
global $wp_rewrite;
$url = apply_filters('url_to_postid', $url);
// First, check to see if there is a 'p=N' or 'page_id=N' to match against
if ( preg_match('#[?&](p|page_id|attachment_id)=(\d+)#', $url, $values) ) {
$id = absint($values[2]);
if ( $id )
return $id;
}
// Check to see if we are using rewrite rules
$rewrite = $wp_rewrite->wp_rewrite_rules();
// Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options
if ( empty($rewrite) )
return 0;
// Get rid of the #anchor
$url_split = explode('#', $url);
$url = $url_split[0];
// Get rid of URL ?query=string
$url_split = explode('?', $url);
$url = $url_split[0];
// Add 'www.' if it is absent and should be there
if ( false !== strpos(home_url(), '://www.') && false === strpos($url, '://www.') )
$url = str_replace('://', '://www.', $url);
// Strip 'www.' if it is present and shouldn't be
if ( false === strpos(home_url(), '://www.') )
$url = str_replace('://www.', '://', $url);
// Strip 'index.php/' if we're not using path info permalinks
if ( !$wp_rewrite->using_index_permalinks() )
$url = str_replace('index.php/', '', $url);
if ( false !== strpos($url, home_url()) ) {
// Chop off http://domain.com
$url = str_replace(home_url(), '', $url);
} else {
// Chop off /path/to/blog
$home_path = parse_url(home_url());
$home_path = isset( $home_path['path'] ) ? $home_path['path'] : '' ;
$url = str_replace($home_path, '', $url);
}
// Trim leading and lagging slashes
$url = trim($url, '/');
$request = $url;
// Look for matches.
$request_match = $request;
foreach ( (array)$rewrite as $match => $query) {
// If the requesting file is the anchor of the match, prepend it
// to the path info.
if ( !empty($url) && ($url != $request) && (strpos($match, $url) === 0) )
$request_match = $url . '/' . $request;
if ( preg_match("!^$match!", $request_match, $matches) ) {
if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
// this is a verbose page match, lets check to be sure about it
if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
continue;
}
// Got a match.
// Trim the query of everything up to the '?'.
$query = preg_replace("!^.+\?!", '', $query);
// Substitute the substring matches into the query.
$query = addslashes(WP_MatchesMapRegex::apply($query, $matches));
// Filter out non-public query vars
global $wp;
parse_str($query, $query_vars);
$query = array();
foreach ( (array) $query_vars as $key => $value ) {
if ( in_array($key, $wp->public_query_vars) )
$query[$key] = $value;
}
// Do the query
$query = new WP_Query($query);
if ( !empty($query->posts) && $query->is_singular )
return $query->post->ID;
else
return 0;
}
}
return 0;
}Связанные Функции
Ещё из раздела
- paginate_links() view
- selected() view
- remove_submenu_page() view
- has_action() view
- get_the_category_list() view
Смотрите также: Функции WordPress и Теги Шаблона.
Решили заняться разработкой сайтов, тогда вам в первую очередь нужно познакомится с дизайном и его основами, для этих целей предлагаю блог о веб-дизайне: designfire.ru. Как не крути, а все начинается с оформления и без симпатичного оформления развивать какой-либо сайт всегда хуже...

А как узнать ID категории по ее url ?