我正在尝试为帖子创建类别过滤器。我通常与get_posts
函数,但这次我需要保持分页,这就是为什么我要使用new WP_Query
.
我已经成功创建了一个AJAX解决方案,它可以返回帖子并显示出来,但似乎使用new WP_Query
中断AJAX调用。
以下是我的AJAX代码:
(function($){
$(function() {
$(\'.category-filter .filter a\' ).click( function(e) {
var category = $(this).data(\'id\');
var container = $(\'#main\');
if ( $( \'body\' ).hasClass( \'blog\' ) ) {
var action = \'get_posts_from_category\';
} else if( $( \'body\' ).hasClass( \'post-type-archive-event\' ) ) {
var action = \'get_events_from_category\';
}
$(this).closest( \'.category-filter\' ).find( \'.filter\' ).removeClass( \'active\' );
$(this).parent().addClass( \'active\' );
e.preventDefault();
$.ajax({
type: "POST",
url: ajax_cat.url,
dataType: \'html\',
data: {
action: action,
nonce: ajax_cat.nonce,
category: category,
},
success: function( $data ) {
container.html( $data );
},
error: function( error ) {
console.log( error );
}
})
})
});
})(jQuery);
和php操作:
function get_posts_from_category() {
$category = $_POST[\'category\'];
$args = array(
\'post_type\' => \'event\',
\'posts_per_page\' => -1,
);
$myquery = new WP_Query( $args );
if($myquery->have_posts()):
while($myquery->have_posts()):
$myquery->the_post();
the_title();
echo \'<br>\';
endwhile;
wp_reset_query();
endif;
wp_die();
}
add_action( \'wp_ajax_get_posts_from_category\', __NAMESPACE__ . \'\\get_posts_from_category\' );
add_action( \'wp_ajax_nopriv_get_posts_from_category\', __NAMESPACE__ . \'\\get_posts_from_category\' );
尝试了许多变体
new WP_Query
这是一个问题。谢谢你的建议。