View file root/template-parts/slider-posts.php

File size: 3.42Kb
<?php
/**
 * ****************************************************************************
 *
 *   НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ
 *
 *   ВНИМАНИЕ!!!!!!!
 *
 *   НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ
 *   ПРИ ОБНОВЛЕНИИ ТЕМЫ - ВЫ ПОТЕРЯЕТЕ ВСЕ ВАШИ ИЗМЕНЕНИЯ
 *   ИСПОЛЬЗУЙТЕ ДОЧЕРНЮЮ ТЕМУ ИЛИ НАСТРОЙКИ ТЕМЫ В АДМИНКЕ
 *
 *   ПОДБРОБНЕЕ:
 *   https://docs.wpshop.ru/child-themes/
 *
 * *****************************************************************************
 *
 * @package Root
 */

$slider_count_mod = root_get_option( 'structure_slider_count' );

if ( ! empty( $slider_count_mod  ) ) {

    $slider_articles = array();

    $slider_count = 3;
    if ( is_numeric( $slider_count_mod ) && $slider_count_mod > -1 ) {
        if ( $slider_count_mod > 15 ) $slider_count_mod = 15;
        $slider_count = $slider_count_mod;
    }

    $slider_posts_ids = root_get_option( 'structure_slider_post_in' );

    // если указаны посты - набираем их
    if ( ! empty( $slider_posts_ids ) ) {

        $slider_posts_id_exp = explode( ',', $slider_posts_ids );

        if ( is_array( $slider_posts_id_exp ) ) {
            $slider_posts_ids = array_map( 'trim', $slider_posts_id_exp );
        } else {
            $slider_posts_ids = array( $slider_posts_ids );
        }

        $slider_articles = get_posts( array(
            'posts_per_page'    => $slider_count,
            'post__in'          => $slider_posts_ids,
        ));

    }


    // если не хватило, добираем из последних
    if ( count( $slider_articles ) < $slider_count ) {

        // сколько осталось постов
        $delta = $slider_count - count( $slider_articles );

        // убираем уже выведенные
        $post__not_in = array();
        foreach ( $slider_articles as $article ) {
            $post__not_in[] = $article->ID;
        }

        $slider_articles_second = get_posts( array(
            'posts_per_page'    => $delta,
            'post__not_in'      => $post__not_in,
            'meta_query'        => array(
                array(
                    'key' => '_thumbnail_id',
                    'compare' => 'EXISTS'
                ),
            ),
        ));

        // если все ок, объединяем
        if ( ! empty( $slider_articles_second ) ) {
            $slider_articles = array_merge( $slider_articles, $slider_articles_second );
        }

    }

    if ( ! empty( $slider_articles ) ) {

        ?>

        <?php do_action( THEME_SLUG . '_slider_before' ) ?>

        <div class="card-slider-container swiper-container">
            <div class="swiper-wrapper">

                <?php foreach ( $slider_articles as $post ) {
                    setup_postdata( $post ); ?>

                    <?php get_template_part( 'template-parts/posts/slider', 'card' ); ?>

                <?php }
                wp_reset_postdata(); ?>

            </div>
            <div class="swiper-pagination"></div>
            <div class="swiper-button-next swiper-button-white"></div>
            <div class="swiper-button-prev swiper-button-white"></div>
        </div>

        <?php do_action( THEME_SLUG . '_slider_after' ) ?>

        <?php
    }

}