Как получить идентификатор страницы, если я знаю только название?
Существует ли функция, прямо противоположная этой:
get_the_title(ID)
Я знаю, что есть:
get_the_id()
Но, похоже, он не принимает никаких аргументов.
Итак, в принципе, я ищу что-то вроде:
$title = 'Something';
get_the_id($title);
Я уже знаю это решение:
global $wpdb;
$post_name = get_query_var('name');
$post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $post_name");
Но, может быть, есть что-то такое, чего мне не хватает?
4 answers
Я не уверен, как получить его с помощью заголовка, но вы можете получить его с помощью слизняка (что часто бывает более полезным по моему опыту), используя это:
Http://erikt.tumblr.com/post/278953342/get-a-wordpress-page-id-with-the-slug
Просто измените "$страница" на "$сообщение", если вы хотите возвращать пули для сообщений вместо страниц.
Удачи!
get_page_by_title( $title, [$output = 'object'], [$post_type = 'page'] )
существует именно для этой цели. Сейчас я использую его в одном из своих проектов для отображения всех вложений для определенной страницы на боковой панели:
if ( $oPage = get_page_by_title('Proudly Supporting...') ) {
$children = get_posts(array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => 3,
'post_status' => null,
'post_parent' => $oPage->ID, /* Using the Page ID */
'orderby' => 'rand',
));
if ( $children ) {
/* Do something with the children */
}
}
У меня была та же проблема. Я использовал следующий код:
$my_title = 'My title';
global $wpdb;
$mypost = $wpdb->get_row( "SELECT * FROM wp_posts WHERE post_title = '" . $my_title . "' " );
echo $mypost->ID;
Для этого есть встроенная функция. Воспользуйся: get_page_by_title();
Смотрите ссылку здесь http://codex.wordpress.org/Function_Reference/get_page_by_title