Загрузить больше сообщений Ajax Кнопка с категорией как опция на неархивированной странице в WordPress - PullRequest
0 голосов
/ 26 апреля 2020

Итак, я следовал этому решению { ссылка } @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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...