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' );