Статьи

Изучение функции get_posts в WordPress

Многие плагины WordPress извлекают сообщения из базы данных, настраивая порядок сортировки, извлекая сообщения на основе определенного мета-ключа или таксономии. Вы когда-нибудь задумывались, как эти плагины получают настраиваемые списки постов без написания SQL-запросов? В этом уроке мы научимся делать именно это.

XML-RPC для WordPress

В этой статье мы рассмотрим get_posts() с некоторыми примерами ее использования в ваших собственных проектах. Мы также рассмотрим некоторые типичные случаи использования этой функции и ее отличие от объекта get_pages функции get_pages .

Что такое get_posts() ?

Функция get_posts была доступна в ядре WordPress начиная с WordPress 1.2.0. Эта функция в основном используется для извлечения сообщений из базы данных путем применения пользовательских фильтров и сортировки окончательного результата на основе набора параметров.

Функция get_posts() возвращает массив объектов WP_Post . Каждый объект WP_Post представляет отдельный пост.

Внутренне get_posts использует объект WP_Query для построения и выполнения SQL-запросов на основе переданного набора параметров.

Примечание. Сообщения означают сообщение, страницу и пользовательский тип сообщения.

Почему бы не использовать объект WP_Query напрямую?

Плагины используют функцию get_posts вместо объекта WP_Query поскольку использование объекта WP_Query напрямую изменяет основной цикл (т. $wp_query переменную $wp_query ), что может вызвать проблемы с сайтом.

В чем разница между get_posts() и get_pages() ?

Оба они используются для извлечения сообщений из базы данных WordPress, однако вот некоторые различия между ними:

  • Некоторые имена и значения параметров различаются между собой. Хотя они ведут себя одинаково независимо от названий параметров.
  • Функция get_pages() настоящее время не получает сообщения на meta_value параметров meta_key и meta_value .
  • Функция get_pages() не использует объект WP_Query . Вместо этого он создает и выполняет запросы SQL напрямую.

get_posts() Параметры функции

Функция get_posts принимает только один аргумент в виде массива. Массив содержит различные параметры для применения пользовательских фильтров и сортировки результатов.

Вот пример кода, который показывает, как вызвать эту функцию и различные доступные параметры:

 <?php $args = array( "posts_per_page" => 5, "paged" => 1 "tax_query" => array( array( "taxonomy" => "category", "field" => "slug", "terms" => "videos,movies", ) ), "orderby" => "post_date", "order" => "DESC", "exclude" => "1123, 4456", "meta_key" => "", "meta_value" => "", "post_type" => "post", "post_status" => "publish" ); $posts_array = get_posts($args); ?> 

Доступно больше параметров, но это наиболее часто используемые. Давайте посмотрим на каждый из этих параметров:

  1. posts_per_page : этот параметр определяет количество постов для возврата. Используйте -1, если вы хотите все сообщения.
  2. paged : позволяет нам перемещаться между наборами постов при использовании параметра posts_per_page . Используется для нумерации страниц. Например: предположим, что posts_per_page равен 10 и в результате 20 сообщений, а затем, если вы назначите paged для 2, будут возвращены последние 10 сообщений
  3. tax_query : отображать сообщения определенного пула таксономии, т. е. фильтровать сообщения другого пула таксономии. terms могут принимать разделенную запятыми строку, представляющую несколько terms таксономии
  4. orderby : используется для сортировки полученных сообщений. Некоторые возможные значения: «none», «date», «rand», «comment_count», «meta_value», «meta_value_num» и т. Д. При сортировке с использованием «meta_value» и «meta_value_num» необходимо meta_key параметр meta_key .
  5. order : обозначает восходящий или нисходящий порядок параметра orderby . Возможные значения: «DESC» или «ASC».
  6. исключить : принимает разделенный запятыми список идентификаторов сообщений, которые будут исключены из поиска в базе данных.
  7. meta_key и meta_value : если вы meta_key только meta_key , будут возвращаться сообщения с ключом. Если вы также предоставите meta_value тогда будут meta_value сообщения, соответствующие meta_value для meta_key .
  8. post_type : извлекает контент на основе поста, страницы или пользовательского типа поста. Помните, что по умолчанию post_type установлен только для отображения сообщений, но не страниц.
  9. post_status : получает сообщения по статусу сообщения. Возможные значения: «опубликовать», «в ожидании», «черновик», «будущее», «любой» или «мусор».

Объект WP_Post

Функция get_posts возвращает массив, содержащий объекты WP_Post . Вот важные свойства объекта WP_Post :

  1. ID : ID сообщения
  2. post_author : имя автора сообщения
  3. post_type : тип сообщения
  4. post_title : название поста
  5. post_date : дата публикации сообщения. Формат: 0000-00-00 00:00:00
  6. post_content : содержание сообщения.
  7. post_status : статус сообщения
  8. comment_count : Количество комментариев к записи

Примеры get_posts

Давайте посмотрим на некоторые примеры, используя функцию get_posts .

Если вы хотите отобразить n самых популярных сообщений на вашем сайте, вы можете использовать get_posts для их получения. Вот пример:

 <?php $args = array("posts_per_page" => 10, "orderby" => "comment_count"); $posts_array = get_posts($args); foreach($posts_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; echo "<p>" . $post->post_content . "</p><br>"; } ?> 

Здесь мы используем параметр orderby для сортировки постов по количеству комментариев, получая топ-10 постов.

Случайные сообщения

Вы также можете легко получить случайные сообщения. Это полезно, чтобы порекомендовать пользователям другую статью на вашем сайте, когда они закончат читать текущую. Вот код для этого:

 <?php $args = array("posts_per_page" => 1, "orderby" => "rand"); $posts_array = get_posts($args); foreach($posts_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; echo "<p>" . $post->post_content . "</p><br>"; } ?> 

В приведенном выше примере мы передали значение rand параметру order_by .

Сообщения с мета-ключом и значением

Возможно, мы захотим получить все сообщения, которые имеют определенный мета-ключ и назначенное значение. Например: в некоторых блогах есть рецензент для каждой статьи. Возможно, мы захотим получить статьи, проверенные конкретным рецензентом.

Вот код для этого:

 <?php $args = array("posts_per_page" => -1, "meta_key" => "reviewer", "meta_value" = "narayanprusty"); $posts_array = get_posts($args); foreach($posts_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; echo "<p>" . $post->post_content . "</p><br>"; } ?> 

Здесь мы извлекаем все сообщения, рассмотренные «narayanprusty». Мы предполагаем, что имя рецензента сохраняется через мета-ключ «рецензент» для каждого поста.

Пользовательский тип сообщения с пользовательской таксономией

Мы можем захотеть получить сообщения с пользовательским типом сообщения с пользовательским именем таксономии. Рассмотрим этот пример кода:

 <?php $args = array("posts_per_page" => -1, "post_type" => "coupons", "tax_query" => array( array( "taxonomy" => "coupon_category", "field" => "slug", "terms" => "plugins,themes", ) )); $posts_array = get_posts($args); foreach($posts_array as $post) { echo "<h1>" . $post->post_title . "</h1><br>"; echo "<p>" . $post->post_content . "</p><br>"; } ?> 

В этом примере мы извлекаем сообщения с пользовательским типом сообщений, называемыми «купонами», которые принадлежат пользовательским таксономиям «плагинов» и «тем».

Вывод

В этой статье мы увидели, как get_posts функция get_posts , различные параметры, которые она поддерживает, просматривая возвращаемый результат и некоторые примеры использования. Функция get_posts является одной из наиболее часто используемых функций WordPress, я надеюсь, что теперь вы можете начать использовать ее в своих собственных проектах.