Есть страничка постов с табами для каждой категории, выглядит это так:
В каждой вкладке соответственно выводятся посты из своей категории и подгрузка должна подгружать свои посты для каждой вкладки. Плюс здесь должен быть вывод из 4х конкретных категорий. На данный момент видно что в data-true-posts копки передаются какие-то данные, но кнопка вроде как показывает загрузку, пропадает и при этом посты новые не подгружает. Вывод постов из своей категории для каждой вкладки тоже работает. Это страница блога, код в файле index.php:
<?php $categories = get_categories([
'include' => array(20,21,22,8)
]);
foreach( $categories as $key => $category) : ?>
<?php $args = array(
'posts_per_page' => 1,
'post_type' => 'post',
'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 blog-preview">
<div class="row tabs-content_blog-content">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<div class="col-12">
<div class="blog-card blog-preview__item">
<div class="blog-card__img irof">
<?php the_post_thumbnail(); ?>
</div>
<div class="blog-card__body">
<h3 class="text-h2 mb-20 blog-card__title"><?php the_title(); ?></h3>
<div class="text-h4 mb-30 w-100"><?php the_date( 'd F Y' ); ?></div>
<a href="<?php the_permalink(); ?>">
<p class="blog-card__text"><?php echo get_excerpt(400); ?><a href="<?php the_permalink(); ?>" class="blog-card__link">read more</a></p>
</a>
</div>
</div>
</div>
<!-- col-->
</div>
<?php endwhile; ?>
<?php if ( $query->max_num_pages > 1 ) : ?>
<script>
var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
</script>
<div class="row page-location-content__btn justify-content-center">
<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="loadmore_blog button">Show more</button>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php endforeach; ?>
Код в файле functions.php:
function blog_load_posts(){
$args = unserialize( stripslashes( $_POST['query'] ) );
$args['paged'] = $_POST['page'] + 1; // we need next page to be loaded
$args['post_status'] = 'publish';
$args['post_type'] = 'post';
$args['posts_per_page'] = 1; // по сколько записей подгружать
$args['tax_query'] = array( array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $args['cat']));
// обычно лучше использовать WP_Query, но не здесь
query_posts( $args );
// если посты есть
if( have_posts() ) : while( have_posts() ): the_post();
echo '
<div class="col-12">
<div class="blog-card blog-preview__item">
<div class="blog-card__img irof">
'. get_the_post_thumbnail() .'
</div>
<div class="blog-card__body">
<h3 class="text-h2 mb-20 blog-card__title">'. get_the_title() .'</h3>
<div class="text-h4 mb-30 w-100">'. get_the_date( 'd F Y' ) .'</div>
<a href="'. get_the_permalink() .'">
<p class="blog-card__text">'. get_excerpt(400) .'<a href="'. get_the_permalink() .'" class="blog-card__link">read more</a></p>
</a>
</div>
</div>
</div>
';
endwhile; endif;
die();
}
add_action('wp_ajax_loadmoreblog', 'blog_load_posts');
add_action('wp_ajax_nopriv_loadmoreblog', 'blog_load_posts');
Код в js файле:
$('.loadmore_blog').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 $dataTarget = $(this).closest('.tabs-content').find('.tabs-content_blog-content');
var data = {
'action': 'loadmoreblog',
'query': true_posts,
'page': current_page
};
$.ajax({
url: ajaxurl, // обработчик
data: data, // данные
type: 'POST', // тип запроса
success: function (data) {
if (data) {
el.text('Show more'); // вставляем новые посты
current_page++; // увеличиваем номер страницы на единицу
el.attr('data-current_page', current_page);
if (current_page == max_pages) el.remove(); // если последняя страница, удаляем кнопку
$dataTarget.append(data);
} else {
el.remove(); // если мы дошли до последней страницы постов, скроем кнопку
}
}
});
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я понимаю, что эту ошибку уже тысячу раз рассматривалиНа просторах интернета я нашёл три решения этой ошибки в моём случае
Написал код загрузки изображения на сервер - надежен ли он или можно как то загрузить вредоносный кодМожет есть советы какие нибудь? PHP
Возникла необходимость рефакторинга довольно старого кода на php, написанного примерно в 2005м годуКод запускается на php 5