Цикл WordPress – це код, за допомогою якого відображається контент на вашому сайті на WordPress.
Візьмемо, наприклад, шаблон index.php . В основній темі для блогу цей шаблон використовується для виведення декількох записів або анонсу запису на домашній сторінці сайту, а WordPress цикл допомагає це зробити.
Вам знадобляться мінімальні знання про цикл, якщо ви хочете вдосконалити дизайн свого сайту на WordPress. Навіть якщо ви не знайомі з PHP або HTML, то після прочитання цієї посади у вас будуть уявлення про те, як працює цикл WordPress.
Дивіться також :
Розуміння циклу в WordPress
Найкращий спосіб зрозуміти принцип роботи циклу WordPress – це подивитися, як він використовується у темі WordPress. Тому, давайте спочатку розглянемо простий код, та був і його рядок окремо, щоб зрозуміти, яку функцію кожна їх виконує.
Нижче наведено приклад найпростішого циклу WordPress. Код у вашій темі на WordPress для циклу може бути довшим, але його структура нічим не відрізняється.
<?php
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
//
// Post Content here
//
endwhile; // end while
endif; // end if
?>
Якщо ви хоч трохи знаєтеся на PHP, то вищезгаданий код, швидше за все, буде вам зрозумілий. Проте ми все-таки детально розглянемо кожен рядок коду на випадок, якщо ви абсолютний новачок у цьому.
Насамперед ми повідомляємо серверу, що ми будемо використовувати PHP . Відкриваємо функцію PHP так:
<?php
У наступному рядку ми маємо звичну функцію перевірки « if » з функцією have_posts . Ця функція відноситься до логічної, що означає, що вона може бути як правдивою, так і хибною.
Тому наступний рядок у коді говорить нам наступне, що «Якщо є записи, які мають виводитися – цей рядок потрібно використовувати, якщо їх немає – нічого не робити»:
if ( have_posts() ) :
У наступному рядку використовується цикл while . Він виконуватиметься, якщо інформація «правдива». Тобто, якщо є записи, які мають виводитися на сайті, то цей рядок має бути у коді.
Тому, якщо на вашому сайті повинні відображатися п'ять постів на домашній сторінці, функція while відображатиме дані в циклі п'ять разів:
while ( have_posts() ) :
Потім ми беремо дані наступного запису, використовуючи функцію the_post . Це дозволяє налаштувати запис і отримати будь-яку частину або інформацію про пост, включаючи контент, дату публікації, автора запису, категорію публікації та багато іншого:
the_post();
Якщо ми згадали наш запис, ми можемо відобразити в ньому все, що хочемо. Існує більше тисячі доступних тегів, які можна використовувати лише у циклі WordPress. Наприклад, the_title для виведення заголовка посту, the_content для відображення самого посту, the_category — для категорій та рубрик:
// // Post Content here //
Після підтвердження інформації, яка має відображатися на сайті, ми закриваємо цикл while :
endwhile; // end while
Потім ми закриваємо функцію перевірки « if »:
endif; // end if
І закриваємо код PHP:
?>
Як бачите, якщо розбити цикл по рядках, то все стає зрозумілим.
Приклади циклу
У WordPress Codex є шаблон маленького коду index.php . У коді нижче видно, що у шаблоні index.php згадується шапка, цикл WordPress, сайдбар та футер:
<?php
get_header();
if (have_posts()) :
while (have_posts()) :
the_post();
the_content();
endwhile;
endif;
get_sidebar();
get_footer();
?>
Код для циклу WordPress виглядає трохи інакше в більшості тем WordPress, тому що і інформація трохи інша. Найкращий спосіб зрозуміти, як цикл працює на практиці – це вивчити цикл WordPress у різних темах оформлення.
Нижче наведено приклад коду, який використовується для циклу у шаблоні нинішньої стандартної теми на WordPress - Twenty Fourteen . Як бачите, у цій темі використовуються різні шаблони для контенту, залежно від типу посту. Наприклад, стандартний пост виводитиме різну інформацію з відео-постів та цитат-постів.
Навігаційні лінки виводяться після останнього посту, і повідомлення відображається для відвідувачів у випадку, якщо пост не знайдено (це здійснюється за допомогою шаблону content-none.php ).
<?php
if ( have_posts() ) :
// Start the Loop.
while ( have_posts() ) : the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
endwhile;
// Previous/next post navigation.
twentyfourteen_paging_nav();
else :
// If no content, include the "No posts found" template.
get_template_part( 'content', 'none' );
endif;
?>
Цикл легше використовувати у темах TwentyFourteen та Twenty Thirteen , тому що код для виведення контенту та мета-інформації знаходиться у різних шаблонах. Більше практично структурувати код для тих, які підтримують формати постів.
Якщо проаналізувати популярну тему Twenty Twelve , можна помітити, що цикл вимагає наявності інших файлів шаблона. Але більшість коду залишається в шаблоні циклу - index.php.
<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<?php if ( current_user_can( 'edit_posts' ) ) :
// Show a different message to a logged-in user who can add posts.
?>
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'No posts to display', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php printf( __( 'Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?></p>
</div><!-- .entry-content -->
<?php else :
// Show the default message to everyone else.
?>
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
<?php endif; // end current_user_can() check ?>
</article><!-- #post-0 -->
<?php endif; // end have_posts() check ?>Найкраще запам'ятати принцип кодування « Не повторюйте самостійно !». Скорочуючи кількість повторень, ви можете створити компактніші теми, і вам буде легше їх змінювати.





















Коментарі до запису: 1
Цикл have_posts() стосується тільки записів (post) або сторінок (page) теж?