WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

AJAX пагинация

Пример подобной реализации ajax-пагинации подсмотрел в интернете, но насколько я понимаю на стороне клиента возможно как угодно изменить js объект AjaxPagination, в часности его свойство query_vars. На сервере оно передаётся в query_posts без изменений.

Подскажите, насколько безопасен такой вариант пагинации? и как можно проверить $_POST[ 'query' ] перед тем как передавать его в query_posts, да и нужно ли вообще это делать?

add_action( 'wp_enqueue_scripts', function () {
   wp_localize_script( 'pstu-next-theme-main', 'AjaxPagination', array(
		'ajaxurl'        => admin_url( 'admin-ajax.php' ),
		'query_vars'     => serialize( $wp_query->query_vars ),
		'paged'          => ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1,
		'max_num_pages'  => $wp_query->max_num_pages
	) );
} );
function true_load_posts () {
	$args = unserialize( stripslashes( $_POST[ 'query' ] ) );
	$args[ 'paged' ] = $_POST[ 'page' ] + 1;
	$args[ 'post_status' ] = 'publish';
	query_posts( $args );
	get_template_part( 'includes/loop', 'blog' );
	wp_die();
}
add_action( 'wp_ajax_pstu_pagination', 'true_load_posts' );
add_action( 'wp_ajax_nopriv_pstu_pagination', 'true_load_posts' );
0
viktor-chyomov
2 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация