В движке Вордпресс есть несколько полезных и, главное, встроенных в движок, циклов-запросов, которые оперируют с данными из базы данных. Речь идет о функциях, которые делают запросы к базе данных и возвращают некий массив контента. И с помощью цикла позволяют эффективно обрабатывать этот массив. Эти функции также позволяют «кастомизировать» (задавать параметры) запрос к базе данных и делать выборку только нужного контента.
Основные функции для этого: query_posts()
, get_posts()
и WP_Query()
Какой контент можно ими обрабатывать: выборка постов (записей), отдельной записи, архив записей (по автору, по дате), выборка записей по категории, выборка записей по тегам (меткам), — с указанием дополнительных параметров.
После того, как функция сделала выборку и вернула массив, контент с помощью цикла можно вывести на экран в удобочитаемом виде. Например, «вытянуть» из массива и «передать» html-тегам название поста, дату публикации, категорию поста и т.п.
query_posts()
– стандартный цикл. Это не только наиболее упрощенный способ изменения основного запроса, но и также наиболее проблематичный способ, поскольку заменяет запрос его новым экземпляром (и переписывает глобальные переменные $wp_query
, $post
, $posts
). Можно использовать 1 раз на странице (шаблоне). Эта функция не рекомендуется ввиду того, что делает дополнительные SQL-запросы к базе данных, может вызывать баги, особенно при построении страниц с пагинацией (разбивке по страницам). Вместо этой функции рекомендуется использовать другие методы, рассмотренные ниже.get_posts()
– дополнительный цикл. Эта функция очень похожа в использовании на предыдущую, может принимать те же параметры (за небольшими исключениями), но ее главное отличие в том, что она возвращает массив публикаций (записей), не изменяя при этом глобальные переменные ($wp_query
, $post
, $posts
). Использование этой функции безопасно практически в любом месте (читай – шаблоне). Можно использовать много раз на странице (в одном шаблоне). Наиболее популярный метод.WP_Query()
– дополнительный цикл. Класс WP_Query
наиболее сложный (предыдущие две функции работают на его основе), позволяет задавать множество параметров выборки, а главное его отличие – он позволяет создавать новый собственный объект и работать в дальнейшем с ним. Эта функция особенно полезна, когда нужно выводить посты, которые не связаны с текущей страницей или при работе с множественными циклами. Использование этой функции также безопасно практически в любом месте (читай – шаблоне). Рекомендуется использование только для особых и/или сложных случаев выборки данных.
Визуально работу функций запросов в WordPress можно изобразить с помощью этой инфографики:
Пример использования функции get_posts()
для выборки из базы данных 5 постов в случайном порядке, и вывода ссылок на эти посты в маркированном списке
<ul> <?php global $post; $args = array( 'posts_per_page' => 5, 'orderby' => 'rand' ); /* постов на страницу - 5, сортировка - в случайном порядке */ $rand_posts = get_posts( $args ); foreach ( $rand_posts as $post ) : setup_postdata( $post ); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; wp_reset_postdata(); ?> </ul>
По умолчанию после каждой установки WordPress есть три основных URL-адреса для входа в админку: {домен}/wp-admin.php,…
Производительность – это валюта фрилансера. Когда ты работаешь сам на себя, никто не спросит: "Сколько…
Требуется 20 лет, чтобы создать репутацию, но 5 минут, чтобы ее разрушить. Если вы подумаете…
Если вы хотите добавить на свой сайт возможность переключения между светлым/темным цветовым режимом, тогда вы…
Тебя определяют две вещи: твое терпение, когда у тебя ничего нет и твое поведение, когда…
View Comments
записываются данные текущего поста в цикле и в конце цикла в этой переменной остаются данные последнего поста из этого цикла, а нужно чтобы $post всегда содержала данные текущего поста страницы. Т.е. получается до использования цикла