• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

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

Anastasiya96

Постоялец
Регистрация
14 Мар 2018
Сообщения
137
Реакции
142
вот такой дизайн сайта
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
 
Последнее редактирование:
Назад
Сверху