Итак, я следовал этому решению { ссылка } @dingo_d и применил мой собственный шаблон, чтобы использовать загрузку большего количества сообщений. Проблема в том, что у меня есть другие фильтры, которые работают через различные ajax вызовы для выбора. Прямо сейчас, если я нажму на кнопку «Загрузить больше» в выбранной категории, вместо нее будет загружаться сообщения по умолчанию из выбранной категории. Я хочу передать категорию как необязательную в этой же загрузке, поэтому она работает без выбора какой-либо категории по умолчанию, а также выбирает только сообщения выбранной категории, если категория выбрана? Может кто-нибудь подсказать, что мне не хватает для добавления?
Загрузить еще - Ajax & jquery:
jQuery(function($){
var ppp = 4; // Post per page
var pageNumber = 1;
function load_posts(){
pageNumber++;
var str = '&pageNumber=' + pageNumber + '&ppp=' + ppp + '&action=more_post_ajax';
$.ajax({
type: "POST",
dataType: "html",
url: ajax_posts.ajaxurl,
data: str,
success: function(data){
var $data = $(data);
if($data.length){
$(".products-grid").append($data);
$("#more_posts").attr("disabled",false);
} else{
$("#more_posts").attr("disabled",true);
}
},
error : function(jqXHR, textStatus, errorThrown) {
$loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown);
}
});
return false;
}
$("#more_posts").on("click",function(){ // When btn is pressed.
$("#more_posts").attr("disabled",true); // Disable the button, temp.
load_posts();
});});
Пользовательская страница L oop Шаблон
<?php
$ppp = (isset($_POST["ppp"])) ? $_POST["ppp"] : 4;
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;
header("Content-Type: text/html");
$args = array(
'orderby' => 'date', // we will sort posts by date
'suppress_filters' => true,
'post_type' => 'product',
'posts_per_page' => $ppp,
'paged' => $page,
);
if(is_tax()) {
$queried_object = get_queried_object();
$args = array(
'orderby' => 'date', // we will sort posts by date
// 'order' => $_POST['date'], // ASC or DESC
'post_type' => 'product',
'suppress_filters' => true,
'posts_per_page' => $ppp,
'paged' => $page,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $queried_object->slug,
),
),
);
}
// for taxonomies / categories
if( isset( $_POST['categoryfilter'] ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $_POST['categoryfilter']
)
);
// create $args['meta_query'] array if one of the following fields is filled
if( isset( $_POST['price_min'] ) && $_POST['price_min'] || isset( $_POST['price_max'] ) && $_POST['price_max'] || isset( $_POST['total_sales'] ) && $_POST['total_sales'] == 'on' || isset( $_POST['sellout'] ) && $_POST['sellout'] == 'on' )
$args['meta_query'] = array( 'relation'=>'AND' ); // AND means that all conditions of meta_query should be true
// if both minimum price and maximum price are specified we will use BETWEEN comparison
if( isset( $_POST['price_min'] ) && $_POST['price_min'] && isset( $_POST['price_max'] ) && $_POST['price_max'] ) {
$args['meta_query'][] = array(
'key' => '_price',
'value' => array( $_POST['price_min'], $_POST['price_max'] ),
'type' => 'numeric',
'compare' => 'between'
);
} else {
// if only min price is set
if( isset( $_POST['price_min'] ) && $_POST['price_min'] )
$args['meta_query'][] = array(
'key' => '_price',
'value' => $_POST['price_min'],
'type' => 'numeric',
'compare' => '>'
);
// if only max price is set
if( isset( $_POST['price_max'] ) && $_POST['price_max'] )
$args['meta_query'][] = array(
'key' => '_price',
'value' => $_POST['price_max'],
'type' => 'numeric',
'compare' => '<'
);
}
// if item Best Seller is set
if( isset( $_POST['total_sales'] ) && $_POST['total_sales'] == 'on' ){
$args['meta_query'][] = array(
'key' => 'total_sales',
'value' => '10',
'compare' => '>'
);}
// if item Deals is set
if( isset( $_POST['sellout'] ) && $_POST['sellout'] == 'on' ){
$args['meta_query'][] = array(
'relation' => 'OR',
array( // Simple products type
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
),
array( // Variable products type
'key' => '_min_variation_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
)
);}
$gd_query = new WP_Query( $args );
if ( $gd_query->have_posts() )
{
while ($gd_query->have_posts()):
$gd_query->the_post();
global $product;
$post_id = $product->get_id();
$product = wc_get_product( $post_id );
<!--- Content --->
} else
{
echo "No Results Found";
}
wp_reset_postdata();