Anastasiya96
Постоялец
- Регистрация
- 14 Мар 2018
- Сообщения
- 137
- Реакции
- 142
- Автор темы
- #1
вот такой дизайн сайта
на каждом табе south florida и т.д. свои посты, у каждого таба есть своя кнопка "показать еще". сейчас посты выводятся, кнопка отображется, но при нажатии на нее ничего не происходит. на данный момент из ошибок вижу, что в файле js переменная true_posts при выводе в консоль обрезает данные. как это исправить и как сделать что б на каждом табе была своя подгрузка?
вот код функции в файле страницы:
код js файла:
код в functions.php:
скрин данных которые выводятся в console.log(true_posts), насколько я понимаю данные почему-то обрезаются
на каждом табе 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), насколько я понимаю данные почему-то обрезаются
Последнее редактирование: