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

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

Цикл WordPress – це код, за допомогою якого відображається контент на вашому сайті на WordPress.

Візьмемо, наприклад, шаблон index.php . В основній темі для блогу цей шаблон використовується для виведення декількох записів або анонсу запису на домашній сторінці сайту, а WordPress цикл допомагає це зробити.

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Вам знадобляться мінімальні знання про цикл, якщо ви хочете вдосконалити дизайн свого сайту на 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 ?>

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

Джерело: elegantthemes.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

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

Віталій:

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

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