Created
August 1, 2016 10:15
-
-
Save seredniy/7fb83290566c56ed4c0c5dc669e06435 to your computer and use it in GitHub Desktop.
Ajax-подгрузка постов
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- Ссылка для запуска подгрузки постов --> | |
<a href="#" data-ajax="<?php echo get_option('siteurl').'/wp-admin/admin-ajax.php'; ?>" data-category="<?php echo get_query_var('cat'); ?>" data-offset="<?php echo get_option('posts_per_page'); ?>" data-perpage="<?php echo get_option('posts_per_page'); ?>" class="more-posts">Загрузить еще</a> | |
<!-- Скрипт отправки аякса --> | |
<script> | |
$('.more-posts').click(function(e) { | |
// обезоружим ссылку | |
e.preventDefault(); | |
// Покажем что мы трудимся | |
$(this).text('Загружаю игры...'); | |
// Определим начальные параметры | |
var perpage = $(this).data('perpage'), offset = $(this).data('offset'), ajaxurl = $(this).data('ajax'), category = $(this).data('category'); | |
// Делаем запрос к обработчику | |
$.ajax({ | |
type: 'POST', | |
url: ajaxurl, | |
data: { | |
'action': 'getpost', | |
'perpage': perpage, | |
'offset': offset, | |
'category': category, | |
}, | |
success: function(data){ | |
// Если меньше постов чем нужно - пишем, что как бы кончились посты | |
var countposts = data.split('уникальная часть кода по которой считаем').length -1; | |
// Вставим посты | |
$('#game-wrap').append(data); | |
// Если постов в ответе меньше, чем нужно нам - делаем кнопку неактивной | |
if (countposts < perpage) { $('.more-posts').text('Увы, постов больше нет').addClass('nomore');}; | |
// Если постов достаточно | |
if (countposts == perpage) { $('.more-posts').text('Еще посты');}; | |
// Увеличим офсет на кол-во постов | |
var newoffset = offset + perpage; | |
$('.more-posts').data('offset', newoffset) | |
} | |
}); | |
}); | |
</script> | |
<!-- Обработчик запроса --> | |
<?php | |
add_action('wp_ajax_nopriv_getpost', 'getpost_callback'); | |
add_action('wp_ajax_getpost', 'getpost_callback'); | |
function getpost_callback() { | |
$args = array(); // подготовим массив | |
$args['meta_query'] = array('relation' => 'AND'); // отношение между условиями, у нас это "И то И это", можно ИЛИ(OR) | |
// Сортировка по просмотрам | |
if ($_POST['sortby'] == "views") { | |
$args['meta_key'] = 'views'; | |
$args['orderby'] = 'meta_value'; | |
$args['order'] = 'DESC'; | |
} | |
// По категории | |
if ($_POST['category']!= '') { | |
$args['cat'] = $_POST['category']; | |
} | |
$args['numberposts'] = $_POST['perpage']; | |
$args['offset'] = $_POST['offset']; | |
//Возвращаем посты | |
global $post; $myposts = get_posts( $args ); foreach( $myposts as $post ){ setup_postdata($post); ?> | |
<!-- ТУТ КОД ВЫВОДА ПОСТОВ В ЦИКЛЕ --> | |
<?php } wp_die(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment