Просмотров: 1 783

Объект $wp_query и массив $posts.

Напомню о чем говорилось в предыдущей заметке.

Когда WordPress сделал запрос к базе данных, должен был образоваться глобальный объект $wp_query. Предлагаю прямо сейчас проверить, так ли это на самом деле.

Я буду вносить изменения сразу в стандартную тему WordPress, которая называется twentyfourteen. Хотя подобные эксперименты вы можете произвести на любой другой теме.

Открываю файл index.php и где-то вот в этой части:

<?php
/**
* The main template file
*
* This is the most generic template file in a WordPress theme and one
* of the two required files for a theme (the other being style.css).
* It is used to display a page when nothing more specific matches a query,
* e.g., it puts together the home page when no home.php file exists.
*
* @link http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header();
?>
<div id="main-content" class="main-content">
<?php
if ( is_front_page() && twentyfourteen_has_featured_posts() ) {
// Include the featured content template.
get_template_part( 'featured-content' );
}
?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
echo "<pre>";
print_r($GLOBALS);
echo "</pre>";

Добавляю следующий код:

echo "<pre>";
print_r($GLOBALS);
echo "</pre>";

С помощью этого кода вы можете увидеть , какие глобальные объекты, переменные или массивы у нас имеются.

Содержимое будет выведено на главной странице и выглядеть это будет примерно вот так:

28-11-2014 13-30-00

Если подробно изучить этот массив данных, то вы можете в нем обнаружить тот самый глобальный объект $wp_query.

В нем содержатся все данные, которые нужно отобразить на странице и дополнительная служебная информация.

Давайте уберем лишнее и оставим только содержимое объекта $wp_query. Для этого изменим код на следующий.

echo "<pre>";
print_r($wp_query);
echo "</pre>";

В объекте $wp_query находится довольно много служебной информации, но если вы подробно разберетесь со всем этим, то можете увидеть, что все то, что должно быть выведено на страницу, храниться в массиве $posts.

28-11-2014 13-34-39

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

Давайте теперь рассмотрим содержимое уже конкретно этого массива. Для этого изменим код на следующий:

echo "<pre>";
print_r($posts);
echo "</pre>";

Точно также получить доступ к переменной $posts можно так:

echo "<pre>";
print_r($wp_query->posts);
echo "</pre>";

Если вы все сделали правильно, то у вас на странице будет примерно такая картина:

28-11-2014 13-39-30

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

Именно с этим массивом мы будем работать, когда будем разбирать, как работают циклы WordPress.