Помощь почему не работает ajax подгрузка постов WP?

Anastasiya96

Постоялец
Регистрация
14 Мар 2018
Сообщения
137
Реакции
141
вот такой дизайн сайта
PrX8g.jpg


на каждом табе south florida и т.д. свои посты, у каждого таба есть своя кнопка "показать еще". сейчас посты выводятся, кнопка отображется, но при нажатии на нее ничего не происходит. на данный момент из ошибок вижу, что в файле js переменная true_posts при выводе в консоль обрезает данные. как это исправить и как сделать что б на каждом табе была своя подгрузка?

вот код функции в файле страницы:
Код:
<div class="page-location-content gallery">
                        <?php foreach( $categories as $key => $category) : ?>

                            <?php $args = array(
                                'posts_per_page' => 1,
                                'post_type' => 'locations',
                                'tax_query' => array(
                                        array(
                                            'taxonomy'  => 'category',
                                            'field'     => 'term_id',
                                            'terms'     => $category -> term_id,
                                        )
                                    )
                            );

                            $query = new WP_Query( $args );

                            // Цикл
                            if ( $query->have_posts() ) : ?>
                            <div class="tabs-content">
                                <div class="row ">
                                    <?php while ( $query->have_posts() ) : $query->the_post(); ?>
                                        <div class="col-12">
                                            <div class="page-location-item">
                                                <div class="page-location-item__photo irof mb-3 mb-md-4">
                                                    <?php the_post_thumbnail(); ?>
                                                </div>
                                                <p class="text-h1 text-h1--36 mb-3 mb-md-4 page-location-item__title"><?php the_title(); ?></p>
                                                <?php the_content(); ?>
                                            </div>
                                        </div>
                                        <!-- /.col-12  -->
                                    <?php endwhile; ?>
                                    <?php if (  $query->max_num_pages > 1 ) : ?>
                                        <button type="button"  data-true_posts="<?php echo serialize($query->query_vars); ?>"
                                            data-current_page = "<?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>"
                                            data-max_pages='<?php echo $query->max_num_pages; ?>' class="true_loadmore button mb-30">Show more</button>
                                    <?php endif; ?>
                                </div>
                                <!-- /.row -->
                            </div>
                        <?php endif; ?>
                        <?php wp_reset_query(); ?>
                        <?php endforeach; ?>
                    </div>

код js файла:
Код:
jQuery(function ($) {
    $('.true_loadmore').click(function () {

        var el = $(this);
        var true_posts = el.attr('data-true_posts');
        var current_page = el.attr('data-current_page');
        var max_pages = el.attr('data-max_pages');

        $(this).text('Loading...'); // изменяем текст кнопки, вы также можете добавить прелоадер
        var data = {
            'action': 'loadmoreposts',
            'query': true_posts,
            'page': current_page
        };

        console.log(true_posts);

        $.ajax({
            url: ajaxurl, // обработчик
            data: data, // данные
            type: 'POST', // тип запроса
            success: function (data) {
                console.log(data);
                if (data) {
                    el.text('Show more').before(data); // вставляем новые посты
                    current_page++; // увеличиваем номер страницы на единицу
                    el.attr('data-current_page', current_page);
                    if (current_page == max_pages) el.remove(); // если последняя страница, удаляем кнопку
                } else {
                    el.remove(); // если мы дошли до последней страницы постов, скроем кнопку
                }
            }
        });
    });
});

код в functions.php:
Код:
function main_load_posts(){
    $args = json_decode( stripslashes( $_POST['query'] ), true );
    $args['paged'] = $_POST['page'] + 1; // we need next page to be loaded
    $args['post_status'] = 'publish';
    $args['post_type'] = 'locations';
    $args['posts_per_page'] = 1; // по сколько записей подгружать
    $args['tax_query'] = array( array( 'taxonomy'  => 'category', 'field'     => 'term_id', 'terms'     => $category -> term_id));

    // обычно лучше использовать WP_Query, но не здесь
    query_posts( $args );
    // если посты есть
    if( have_posts() ) :
      echo '
        <div class="tabs-content">
          <div class="row ">
      ';
            // запускаем цикл
            while( have_posts() ): the_post();

              echo '
                <div class="col-12">
                  <div class="page-location-item">
                    <div class="page-location-item__photo irof mb-3 mb-md-4">
                      '. get_the_post_thumbnail() .'
                    </div>
                    <p class="text-h1 text-h1--36 mb-3 mb-md-4 page-location-item__title">'. get_the_title() .'</p>
                    '. get_the_content() .'
                  </div>
                </div>
              ';

            endwhile;
      echo  '</div>
          <!-- /.row -->
        </div>';
    endif;
    die();
  }


  add_action('wp_ajax_loadmoreposts', 'main_load_posts');
  add_action('wp_ajax_nopriv_loadmoreposts', 'main_load_posts');

скрин данных которые выводятся в console.log(true_posts), насколько я понимаю данные почему-то обрезаются

0rPtH.png
 
Последнее редактирование:
Сверху