Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
теми
Уроки
Хакі

Цикл 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 ( have_posts() ) :

Потім ми беремо дані з наступного запису, використовуючи функцію пошта. Це дозволяє налаштувати запис і отримати будь-яку частину або інформацію про пост, включаючи контент, дату публікації, автора запису, категорію публікації та багато іншого:

the_post();

Якщо ми згадали наш запис, ми можемо відобразити в ньому все, що хочемо. Існує більше тисячі доступних тегів, які можна використовувати лише у циклі WordPress. Наприклад, назва для виведення заголовка посту, the_content для відображення самого посту, категорія_ — для категорій та рубрик:

//
// Post Content here
//

Після підтвердження інформації, яка має відображатись на сайті, ми закриваємо цикл в той час як:

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. Двадцять чотирнадцять. Як бачите, у цій темі використовуються різні шаблони для контенту, залежно від типу посту. Наприклад, стандартний пост виводитиме різну інформацію з відео-постів та цитат-постів.

Навігаційні лінки виводяться після останнього посту, і повідомлення відображається для відвідувачів у разі, якщо пост не знайдено (це здійснюється за допомогою шаблону 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 та Двадцять Тринадцять, тому що код для виведення контенту та мета-інформації знаходиться у різних шаблонах. Більше практично структурувати код для тих, які підтримують формати постів.

Якщо проаналізувати популярну тему Двадцять дванадцять, можна помітити, що цикл вимагає наявності інших файлів шаблона. Але більшість коду залишається в шаблоні циклу. 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 ?>

Найкраще запам'ятати принцип кодування.Не повторюйте самостійно!». Скорочуючи кількість повторень, ви можете створити компактніші теми, і вам буде легше їх змінювати.

Джерело: elegantthemes.com
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, який спеціалізується на створенні сайтів на WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 1

Віталій:

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

Додати коментар або відгук