我已经为WordPress商店创建了自己的过滤器。当产品被过滤时,找到的产品会用Ajax和一个新的WP_Query显示。过滤器在URL中显示为参数,并通过POST传递。
到目前为止,一切正常,但是“do_action('woocommerce_after_shop_loop');”不工作,并且没有分页输出。
我的具体问题:如何在Ajax调用中输出分页?
当使用过滤器时调用此函数:
function load_trailers(){
var newParams = window.location.search;
if (currentParams !== newParams){
currentParams = newParams;
jQuery('.products-wrapper').addClass('loading');
jQuery.ajax({
url: wpAjax.ajax_url,
data: {
action: 'trailer', parameter: newParams, query: wpAjax.query,
},
type: 'post',
}).done(function(data){
jQuery('.woocommerce-archive-wrapper').empty();
jQuery('.woocommerce-archive-wrapper').append(data);
jQuery('.products-wrapper').removeClass('loading');
});
}
}
字符串
此函数加载WP_Query并传输产品:
add_action( 'wp_ajax_trailer', 'trailersuche' );
add_action( 'wp_ajax_nopriv_trailer', 'trailersuche' );
function trailersuche(){
$meta_query = $_POST['query'];
$parameters = $_POST['parameter'];
$parameters = str_replace('?', '', explode('&', $parameters));
// Write meta_query ...... $meta_query['meta_query'][]
echo '<div class="woocommerce-notices-wrapper"></div>';
$loop = new WP_Query($meta_query);
echo '<p class="woocommerce-result-count">' . $loop->found_posts . ' Produkte</p>';
do_action('woocommerce_before_shop_loop');
woocommerce_product_loop_start();
while ($loop->have_posts()) {
$loop->the_post();
wc_get_template_part( 'content', 'product' );
}
woocommerce_product_loop_end();
do_action( 'woocommerce_after_shop_loop' );
die();
}
型
1条答案
按热度按时间nr7wwzry1#
要在Ajax调用中启用分页,需要对代码进行一些修改。主要思想是从URL参数中捕获当前页面并将其传递给WP_Query。此外,您需要在Ajax响应中返回分页HTML。
让我们相应地修改你的load_trailers函数和trailersuche函数:
load_trailers函数:
字符串
trailersuche功能:
型
这些更改应该会在加载了Ajax的产品中启用分页。确保您有一个分页容器,其中包含您希望分页链接显示的'pagination'类。