WordPress как на ладони
Новые WordPress шаблоны Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_page_by_title() WP 2.1

Получает данные записи (страницы, поста, произвольного типа записи) по переданному заголовку записи.

Если найдено несколько записей с одинаковым заголовком, то будет возращена запись с меньшим ID.

Запись какого типа нужно получить указывается в третьем параметре $post_type. По умолчанию заголовок будет искаться у "постоянных страниц" (page).

Так как функция использует сравнение MySQL '=', заголовок чаще всего не чувствителен к регистру, зависит от настроек MySQL.

Если нужно получить ID по УРЛ, используйте специальную функцию: url_to_postid().

Прежде чем использовать эту функцию обдумайте как она будет работать. Имейте ввиду, что запрос создаваемый этой функций не такой легкий, как например получение записи по ID. Функция ищет совпадения в таблице по неиндексированному столбцу, поэтому ей придется проверить все строки совпадающие с типом записи. Поэтому тут по умолчанию стоит тип page, обычно там не более 10 записей.

✈ 1 раз = 0.0015с = очень медленно | 50000 раз = 19.42с = медленно PHP 7.0.2, WP 4.4.1

Хуков нет.

Возвращает

Объект/массив.

  • OBJECT, ARRAY_N, ARRAY_A - зависит от параметра $output. Данные возвращаемого массива полностью совпадают с полями таблицы wp_posts.

  • null - если запись не была найдена.

Использование

get_page_by_title( $page_title, $output, $post_type );
$page_title(строка) (обязательный)
Заголовок записи (поста, страницы) данные которой нужно получить.
$output(строка)

Формат вывода найденной записи. Может быть:

  • OBJECT - возвращать как объект;
  • ARRAY_N - возвращать как нумерованный массив;
  • ARRAY_A - возвращать как ассоциативный массив.

По умолчанию: OBJECT

$post_type(строка/массив)
Название типа поста. Для постов это 'post'. Можно указать несколько типов в массиве: array('post', 'page');.
По умолчанию: 'page'

Примеры

#1 Получим данные страницы

Есть страница с заголовком "О сайте". Нам нужно получить объект данных этой страницы (все данные строки таблицы wp_posts в базе данных):

$ppp = get_page_by_title('О сайте');

/*
$ppp будет содержать:

WP_Post Object
(
	[ID] => 7
	[post_author] => 1
	[post_date] => 2010-03-28 15:31:00
	[post_date_gmt] => 2010-03-28 11:31:00
	[post_content] => Контент записи. Обычно тут много написано :)
	[post_title] => О сайте / Об авторе
	[post_excerpt] => 
	[post_status] => publish
	[comment_status] => open
	[ping_status] => closed
	[post_password] => 
	[post_name] => about
	[to_ping] => 
	[pinged] => 
	[post_modified] => 2014-04-21 01:23:20
	[post_modified_gmt] => 2014-04-20 21:23:20
	[post_content_filtered] => 
	[post_parent] => 0
	[guid] => http://wp-kama.ru/about
	[menu_order] => 0
	[post_type] => page
	[post_mime_type] => 
	[comment_count] => 116
	[filter] => raw
)
*/

Получив объект поста мы можем узнать разные данные записи. Например, так мы можем узнать ID записи по заголовку:

$ppp = get_page_by_title('О сайте');
echo $ppp->ID; // ID записи
echo $ppp->post_content; // контент записи

#2 Исключим страницу из списка по заголовку

Предположим мы выводим в меню страницы. Но нам не нужно выводить в это меню страницу с заголовком "Контакты". Исключаем так:

<?php 
$page = get_page_by_title( 'Контакты' );
wp_list_pages( 'exclude=' . $page->ID );
?>

Код get_page_by_title: wp-includes/post.php VER 4.9.8

<?php
function get_page_by_title( $page_title, $output = OBJECT, $post_type = 'page' ) {
	global $wpdb;

	if ( is_array( $post_type ) ) {
		$post_type = esc_sql( $post_type );
		$post_type_in_string = "'" . implode( "','", $post_type ) . "'";
		$sql = $wpdb->prepare( "
			SELECT ID
			FROM $wpdb->posts
			WHERE post_title = %s
			AND post_type IN ($post_type_in_string)
		", $page_title );
	} else {
		$sql = $wpdb->prepare( "
			SELECT ID
			FROM $wpdb->posts
			WHERE post_title = %s
			AND post_type = %s
		", $page_title, $post_type );
	}

	$page = $wpdb->get_var( $sql );

	if ( $page ) {
		return get_post( $page, $output );
	}
}

Cвязанные функции

Из метки: get_by (получение)

Еще из метки: query (запрос)

Еще из раздела: Запросы

4 коммента
  • @ Виталий

    а как выводить контент с авторазметкой

    <p></p>

    ?

    • newbie32 cайт: yumchief.com
      <p>
      <?php
      $ppp = get_page_by_title('О сайте');
      echo $ppp->post_content;
      ?>
      </p>
      • @ Виталий

        Нет, я имею ввиду вот что: при обычном просмотре страницы контент автоматически разбивается на абзацы как это отображено в редакторе.
        Если выводить через данную функцию - все выводится в одну строку

        • @ campusboy3051 cайт: www.youtube.com/c/wpplus
          <?php
          $ppp = get_page_by_title('О сайте');
          echo apply_filters( 'the_content', $ppp->post_content );
          ?>
          2
Здравствуйте, !     Войти . Зарегистрироваться