Я трачу весь этот день, пытаясь выяснить проблему с комбинацией пользовательского запроса и настраиваемых типов сообщений. Это мое последнее средство ...
Заходящего
Я написал плагин, который вводит некоторые пользовательские типы почтовых мое WordPress. Для того, чтобы отобразить их в главном запросе я подключил их в запрос, как это:
function add_cpt_to_query($query) {
*some code...*
// add custom post types to query
if (!(is_admin() || is_post_type_archive() || is_page()) && $query->is_main_query()) {
$query->set('post_type', array_merge(array('post'), $cpt));
}
}
add_action('pre_get_posts','add_cpt_to_query');
В моей теме с другой стороны, я установка АЯКС пагинацией как это:
function setup_pagination() {
global $wp_query;
$max_pages = $wp_query->max_num_pages;
$current_page = ($wp_query->paged > 1) ? $wp_query->paged : 1;
$ajaxurl = admin_url('admin-ajax.php');
wp_register_script('ajax-pagination', get_template_directory_uri() .'/js/dummy.js', array('jquery'), '', true);
wp_localize_script('ajax-pagination', 'ajaxpagination', array(
'max_pages' => $max_pages,
'current_page' => $current_page,
'ajaxurl' => $ajaxurl,
'query_vars' => $wp_query->query_vars
));
wp_enqueue_script('ajax-pagination');
}
add_action('wp_enqueue_scripts', 'setup_pagination');
function pagination() {
$query = $_POST['query_vars'];
$query['paged'] = $_POST['next_page'];
/*
$query = array(
'paged' => 2,
'post_type' => array('post', 'custom_post_type_1', 'custom_post_type_2')
);
*/
$posts = new WP_Query($query);
$GLOBALS['wp_query'] = $posts;
// Start the loop.
while (have_posts()) : the_post();
?>
*some code...*
<?php endwhile;
die();
}
add_action('wp_ajax_nopriv_ajax_pagination', 'pagination');
add_action('wp_ajax_ajax_pagination', 'pagination');
и часть сценария:
$.ajax({
url: ajaxpagination.ajaxurl,
type: 'post',
data: {
action: 'ajax_pagination',
query_vars: ajaxpagination.query_vars,
next_page: parseInt(ajaxpagination.current_page) + 1
}
});
проблема
Если я передаю массив query_vars, я получаю из $ wp_query с измененным значением «paged» обратно в WP_QUERY, он возвращает неправильный набор сообщений. Похоже, WP_QUERY не учитывает cpts в цикле. Хотя эти cpts упоминаются в «post_type» массива query_vars и тем самым передаются вместе с новым WP_QUERY.
Когда я вручную устанавливаю 'post_type' и передаю этот аргумент, он работает по назначению. Аспект, который вызывает у меня мысли, заключается в том, что полученные query_vars, используемые в вызове ajax для WP_QUERY, точно такие же, но только когда я вручную устанавливаю post_type, разбиение на страницы работает так, как должно.
Я не знаю, было ли это несколько понятное объяснение, но я благодарен за каждую идею, которая могла бы помочь мне. Большой THX!
Убедитесь, что, что вы используете '$ posts-> have_posts()' и '$ posts-> the_post()' и после вызова цикла 'wp_reset_postdata()' – kindisch
[http://stackoverflow.com/questions/33431615/wordpress-category-post-ajax-pagination/36802388#36802388] проверьте, что это может вам помочь! –