Как получить идентификатор страницы, если я знаю только название?


Существует ли функция, прямо противоположная этой:

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");

Но, может быть, есть что-то такое, чего мне не хватает?

Author: Wordpressor, 2011-07-28

4 answers

Я не уверен, как получить его с помощью заголовка, но вы можете получить его с помощью слизняка (что часто бывает более полезным по моему опыту), используя это:

Http://erikt.tumblr.com/post/278953342/get-a-wordpress-page-id-with-the-slug

Просто измените "$страница" на "$сообщение", если вы хотите возвращать пули для сообщений вместо страниц.

Удачи!

 3
Author: Michelle, 2011-07-29 00:25:02

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 */
  }

}
 1
Author: Sampson, 2011-11-21 00:24:10

У меня была та же проблема. Я использовал следующий код:

$my_title = 'My title';
global $wpdb;
$mypost = $wpdb->get_row( "SELECT * FROM wp_posts WHERE post_title = '" . $my_title . "' " );
echo $mypost->ID;
 0
Author: Webars, 2011-11-20 23:33:59

Для этого есть встроенная функция. Воспользуйся: get_page_by_title();

Смотрите ссылку здесь http://codex.wordpress.org/Function_Reference/get_page_by_title

 0
Author: Ari, 2013-09-11 09:00:00