【发布时间】:2019-01-22 00:35:32
【问题描述】:
想知道是否有人可以提供帮助,因为这让我发疯了。我有一个包含新闻故事列表的存档页面。现在,这些新闻故事由 ajax 调用控制,以根据包含自定义分类法(在本例中为 3 个,主题、部门和技术)的下拉列表来填充和更改它们。无论如何,我遇到的问题是我无法在任何帖子上进行分页。我不,它与 ajax 调用及其调用的函数有关,但我无法让它工作。我已经设法让它显示分页数字,但是当我点击它们时,它会将我带到我的网址/wp-admin/wp-ajax.php,这显然是错误的。我没有这样做很长时间,所以任何帮助或指导都会有所帮助。
var base = window.location.pathname + window.location.search;
var technologies = document.querySelector('#category').value;
var sectors = document.querySelector('#sectors').value;
var topics = document.querySelector('#topics').value;
var sort = document.querySelector('#sort').value;
var type = window.location.pathname.split('/')[1];
var ajaxurl = 'http://www.mywebsite.com/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'GET',
url: ajaxurl,
data: {
"action": "load_news",
tech: '*' ,
sector: '*' ,
topic: '*' ,
sorting: sort,
type:type,
base:base
},
success: function(response) {
jQuery(".news-slider").html(response);
return false;
}
});
上面是我的 jquery ajax 调用,下面是 functions.php
add_action( 'wp_ajax_nopriv_load_news', 'prefix_load_term_news' );
add_action( 'wp_ajax_load_news', 'prefix_load_term_news' );
function prefix_load_term_news () {
$tech_id = $_GET[ 'tech' ];
$sector_id = $_GET[ 'sector' ];
$topic_id = $_GET[ 'topic' ];
$sort_filter = $_GET['sorting'];
$type = $_GET['type'];
$base = $_GET[ 'base' ];
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array (
'post_type' => $type,
'posts_per_page' =>2,
'paged' => $paged,
'order' => $sort_filter,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'taxonomy-news',
'field' => 'id',
'terms' => $tech_id,
),
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $sector_id,
),
array(
'taxonomy' => 'taxonomy-topics',
'field' => 'id',
'terms' => $topic_id,
),
),
);
try {
$postslist = new WP_Query($args);
$big = 999999999; // This needs to be an unlikely integer
// For more options and info view the docs for paginate_links()
// http://codex.wordpress.org/Function_Reference/paginate_links
$paginate_links = paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
'current' => max( 1, $postslist->get( 'paged' ) ),
'total' => $postslist->max_num_pages,
) );
// Display the pagination if more than one page is found
if ( $paginate_links ) {
echo '<div class="pagination">';
echo $paginate_links;
echo '</div><!--// end .pagination -->';
}
}
catch (Exception $error) {
echo 'An error occurred while loading news posts. Please try again.';
}
?>
<?php if ( $postslist->have_posts() ) :
while ( $postslist->have_posts() ) : $postslist->the_post();
include('template-parts/content-archive-ajax.php');
endwhile;
wp_reset_postdata();
endif;
}
【问题讨论】:
-
基于这个
when i click them it takes me to my web address/wp-admin/wp-ajax.php我猜你应该在你的分页链接上点击event.preventDefault()或return false
标签: php jquery ajax wordpress pagination