Устарела функция get_page_by_title(): чем ее заменить?

Приветствую! В этой статье я хочу рассказать о функции get_page_by_title(), которая считается устаревшей в WordPress 6.2 и может быть удалена в будущем.

Почему она устарела?

Использование get_page_by_title() может привести к ряду проблем:

  • Ненадежные результаты: Функция зависит от настроек сервера, что может привести к разным результатам на разных серверах.
  • Ошибки 404: Прямой запрос к БД, используемый в этой функции, может привести к появлению страницы 404, если страница была перемещена или удалена.
  • Отсутствие кеширования: В отличие от WP_Query, get_page_by_title() не имеет кеша, что может негативно сказаться на производительности.

Чем ее заменить?

Рекомендуется использовать WP_Query или get_posts() для получения страницы по заголовку. Эти функции более надежны, универсальны и имеют кеш.

WP_Query:

PHP

$query = new WP_Query( array(
  'post_type' => 'page',
  'title' => 'Мой заголовок',
) );

if ( $query->have_posts() ) {
  while ( $query->have_posts() ) {
    $query->the_post();

    // Вывод контента страницы
  }
}

get_posts():

PHP

$posts = get_posts( array(
  'post_type' => 'page',
  'title' => 'Мой заголовок',
) );

if ( $posts ) {
  foreach ( $posts as $post ) {
    // Вывод контента страницы
  }
}

Важно: WP_Query может использоваться только во время события plugins_loaded или позже.

Миграция с get_page_by_title()

Если вы используете get_page_by_title() в своем коде, рекомендуется заменить ее на WP_Query или get_posts(). Это поможет вам избежать проблем с совместимостью в будущем.

Заключение:

Функция get_page_by_title() устарела и не рекомендуется к использованию. Переход на WP_Query или get_posts() обеспечит вам более надежную и производительную работу.

Оцените статью