#php #wordpress
#php #wordpress
Вопрос:
Вот цикл WordPress ниже:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
Этот код проверяет, есть ли какие-либо записи в базе данных, а затем (каким-то образом) останавливается, когда текущая запись найдена в базе данных? Это то, что делает код?
Ответ №1:
Этот код можно использовать в single-post.php
и archive-post.php
.
На одной странице $wp_query
содержится только одно сообщение, поэтому цикл выполняется один раз.
На странице архива $wp_query
может содержаться много сообщений, поэтому цикл выполняется для каждого.
PS: выбор в таблице выполняется перед отображением шаблона.
Ответ №2:
loop
Работает с предопределенным выбором сообщений. Выполняется глобальный запрос, чтобы определить, какие сообщения должны отображаться на данной странице. В одном сообщении в блоге есть одно сообщение, в категории / архиве их будет много.
Циклу все равно, сколько выбрано. Он просто выполняет возврат запроса и каждый раз выводит результат. Он не сканирует всю таблицу post каждый раз, поскольку этот выбор выполняется с помощью команды SQL, выполняемой WP, до того, как этот шаблон страницы даже вызывается.