WordPress отображает дубликаты постов по идентификатору термина, используя ajax - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь отобразить custom posts на taxonomy id через ajax, но во время вызова ajax отображаются повторяющиеся сообщения.

Следующий скрипт-скрипт находится в пользовательском шаблоне темы.

jQuery(document).ready(function(){


     jQuery('.cate_link').click(function(){
        var getLinkCat = jQuery(this).attr('cat_permalink');
        var splitLink = getLinkCat.split('?');
        var catName = splitLink[1];
        var termId = jQuery(this).attr('term_id');

        var data = {
            action: 'LoadProductBasedOnTaxonomy',            
            catName:catName,
            termId:termId
        };


        var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";

        jQuery.ajax({
            method: 'post',
            url:ajaxurl,
            dataType:'html',
            data: data,

            beforeSend: function (response) {
                jQuery("#loading").show();
            },
            complete: function (response) {
                jQuery("#loading").hide();
            },

            success: function (response) {
            //  alert(response)


                console.log(response)
                if( response.error != 'undefined' && response.error ){

                    return true;
                  } else {
                     setTimeout(function() {
                      jQuery(".row").html(response)
                        jQuery('#successMessage').show('1000');
                    }, 3000);

                  }
            },
        });


        return false;
    });
});
</script>

И следующий скрипт в пользовательской теме functions.php file

function LoadProductBasedOnTaxonomy(){

if(isset($_POST['catName']) && !empty($_POST['catName'])){
    $getCatName = explode("=", $_POST['catName']);
    $catName = $getCatName[1];  
}

if(isset($_POST['termId']) && !empty($_POST['termId'])){
     $termId = $_POST['termId'];
}

    $args = array('post_type' => 'product',
                'tax_query' => array(
                                    array(
                                    'taxonomy' => 'product_category',
                                    'field' => 'id',
                                    'terms' => $termId,

                                     )
                                )
                            );


    //$getProductsPost = get_posts($args); 
    $getProductsPost = new WP_Query( $args );
    global $post;
    $html .='';
    if ( $getProductsPost->have_posts() ) {

            while ( $getProductsPost->have_posts() ) : $getProductsPost->the_post(); 

        //foreach ($getProductsPost as $key => $value) {    
            /*$image = wp_get_attachment_image_src( get_post_thumbnail_id( $value->ID ), 'thumbnail' ); 
            $html .='<div class="col-lg-12 content"><div class="movie_img">';
            $html .='<a class="thumbnail" href="#" data-image-id="1" data-toggle="modal" data-title="" data-image="" data-target="#image-gallery">';
            $html .='<img with="200px" class="img-thumbnail" src="'.$image[0].'">';
            $html .='</a></div></div>';*/
            $html .='<h1>'.$post->ID.'</h1>';

            echo $html;
        //}
        endwhile;
    }
    wp_reset_postdata();
  wp_die();

}
add_action('wp_ajax_LoadProductBasedOnTaxonomy' ,'LoadProductBasedOnTaxonomy');
add_action('wp_ajax_nopriv_LoadProductBasedOnTaxonomy','LoadProductBasedOnTaxonomy');

Итак, проблема в том, что мы добавили следующие категории и добавили сообщения в категорию.

Ежедневная распродажа : 3 Вам может понравиться : 2 Последний : 5

Но во время вызова ajax при нажатии Daily Sale отображаются сообщения 4 вместо 3, а при нажатии Latest этопоказывает сообщения больше 10 вместо 5.

Я не знаю, почему это происходит, хотя, когда я печатаю общее количество сообщений, он показывает текущий результат, но проблема во время вызова ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...