add infinity scroll frontpage and paged
This commit is contained in:
@@ -11,7 +11,7 @@
|
|||||||
$paged = (get_query_var('paged')) ? absint(get_query_var('paged')) : 1;
|
$paged = (get_query_var('paged')) ? absint(get_query_var('paged')) : 1;
|
||||||
$args = array(
|
$args = array(
|
||||||
'post_type' => 'post',
|
'post_type' => 'post',
|
||||||
'posts_per_page' => 5,
|
'posts_per_page' => 11,
|
||||||
'paged' => $paged,
|
'paged' => $paged,
|
||||||
'category__in' => get_queried_object_id()
|
'category__in' => get_queried_object_id()
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -18,6 +18,5 @@
|
|||||||
?>
|
?>
|
||||||
<?php get_template_part('partials/post-list', null, ['large_first_image' => false, 'query' => $query]); ?>
|
<?php get_template_part('partials/post-list', null, ['large_first_image' => false, 'query' => $query]); ?>
|
||||||
</div>
|
</div>
|
||||||
<button class="articles-preview__show-next">Еще новости</button>
|
|
||||||
</div>
|
</div>
|
||||||
<?php get_footer(); ?>
|
<?php get_footer(); ?>
|
||||||
|
|||||||
@@ -244,30 +244,43 @@ function custom_pagination($query = null)
|
|||||||
echo '</div></div>';
|
echo '</div></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function my_theme_scripts()
|
function my_theme_scripts() {
|
||||||
{
|
|
||||||
wp_enqueue_script('my-load-more', get_template_directory_uri() . '/js/load-more.js', array('jquery'), null, true);
|
|
||||||
|
|
||||||
$query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 10, 'cat' => '19'));
|
if (is_front_page() || (is_category() && !is_paged())) {
|
||||||
|
wp_enqueue_script('my-load-more', get_template_directory_uri() . '/js/load-main-scroll.js', array('jquery'), null, true);
|
||||||
|
|
||||||
|
$query_vars = array('post_type' => 'post', 'posts_per_page' => 10);
|
||||||
|
if (is_category()) {
|
||||||
|
$category = get_queried_object();
|
||||||
|
$query_vars['cat'] = $category->term_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = new WP_Query($query_vars);
|
||||||
|
|
||||||
// Передаем переменные в скрипт
|
|
||||||
wp_localize_script('my-load-more', 'my_load_more_params', array(
|
wp_localize_script('my-load-more', 'my_load_more_params', array(
|
||||||
'ajaxurl' => admin_url('admin-ajax.php'), // URL для AJAX-запроса
|
'ajaxurl' => admin_url('admin-ajax.php'),
|
||||||
'posts' => json_encode($query->query_vars), // Параметры запроса
|
'posts' => json_encode($query->query_vars),
|
||||||
'current_page' => get_query_var('paged') ? get_query_var('paged') : 1, // Текущая страница
|
'current_page' => max(1, get_query_var('paged')), // Начальная страница
|
||||||
'max_page' => $query->max_num_pages // Максимальное количество страниц
|
'max_page' => $query->max_num_pages
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
add_action('wp_enqueue_scripts', 'my_theme_scripts');
|
add_action('wp_enqueue_scripts', 'my_theme_scripts');
|
||||||
|
|
||||||
|
|
||||||
function loadmore_ajax_handler()
|
|
||||||
{
|
function loadmore_ajax_handler() {
|
||||||
$args = json_decode(stripslashes($_POST['query']), true);
|
$args = json_decode(stripslashes($_POST['query']), true);
|
||||||
$args['paged'] = $_POST['page'] + 1; // следующая страница
|
$args['paged'] = $_POST['page'] + 1;
|
||||||
$args['post_status'] = 'publish';
|
$args['post_status'] = 'publish';
|
||||||
$args['posts_per_page'] = 12;
|
$args['posts_per_page'] = 12;
|
||||||
|
|
||||||
|
// Проверка на категорию, если она есть в параметрах запроса
|
||||||
|
if (isset($args['cat']) && !empty($args['cat'])) {
|
||||||
|
$args['cat'] = $args['cat'];
|
||||||
|
} else {
|
||||||
$args['cat'] = [-17, -20, -21];
|
$args['cat'] = [-17, -20, -21];
|
||||||
|
}
|
||||||
|
|
||||||
query_posts($args);
|
query_posts($args);
|
||||||
|
|
||||||
@@ -278,8 +291,11 @@ function loadmore_ajax_handler()
|
|||||||
endif;
|
endif;
|
||||||
die;
|
die;
|
||||||
}
|
}
|
||||||
add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); // для авторизованных пользователей
|
add_action('wp_ajax_loadmore', 'loadmore_ajax_handler');
|
||||||
add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler'); // для неавторизованных пользователей
|
add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Фильтр добавлен для модификации стандартной формы плагина Contact Form ( Срезаем span элементы, в которые оборачивается input ).
|
* Фильтр добавлен для модификации стандартной формы плагина Contact Form ( Срезаем span элементы, в которые оборачивается input ).
|
||||||
|
|||||||
53
js/load-main-scroll.js
Executable file
53
js/load-main-scroll.js
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
jQuery(function($) {
|
||||||
|
var loading = false;
|
||||||
|
var loadCount = 0;
|
||||||
|
var maxLoads = 5;
|
||||||
|
|
||||||
|
function loadMorePosts() {
|
||||||
|
if (loading || loadCount >= maxLoads) return;
|
||||||
|
|
||||||
|
var scrollTop = $(window).scrollTop();
|
||||||
|
var windowHeight = $(window).height();
|
||||||
|
var documentHeight = $(document).height();
|
||||||
|
|
||||||
|
if (scrollTop + windowHeight >= documentHeight - 200) {
|
||||||
|
loading = true;
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
'action': 'loadmore',
|
||||||
|
'query': my_load_more_params.posts,
|
||||||
|
'page': my_load_more_params.current_page
|
||||||
|
};
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: my_load_more_params.ajaxurl,
|
||||||
|
data: data,
|
||||||
|
type: 'POST',
|
||||||
|
beforeSend: function(xhr) {
|
||||||
|
$('.articles-preview__show-next').text('Загрузка...');
|
||||||
|
},
|
||||||
|
success: function(data) {
|
||||||
|
if (data) {
|
||||||
|
$('.articles-preview').append(data);
|
||||||
|
my_load_more_params.current_page++;
|
||||||
|
loadCount++;
|
||||||
|
|
||||||
|
ym(96621494, 'hit', location.pathname + '?page=' + my_load_more_params.current_page);
|
||||||
|
|
||||||
|
if (my_load_more_params.current_page == my_load_more_params.max_page || loadCount >= maxLoads) {
|
||||||
|
$(window).off('scroll', loadMorePosts);
|
||||||
|
$('.articles-preview__show-next').remove();
|
||||||
|
} else {
|
||||||
|
loading = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$(window).off('scroll', loadMorePosts);
|
||||||
|
$('.articles-preview__show-next').remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(window).on('scroll', loadMorePosts);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user