获取AJAX的类别ID '函数(Wordpress)


Get category ID for AJAX 'Load More' function (Wordpress)

我试图在Wordpress帖子页面上过滤AJAX无限滚动功能/加载更多按钮的结果。

如果我在类别ID中硬编码作为WP_Query的参数,它可以工作,但是我似乎无法找到一种方法来获取帖子的类别ID的当前集合。

这是我的load_more php函数:

// Load More
add_action( 'wp_ajax_nopriv_load_more', 'load_more');
add_action( 'wp_ajax_load_more', 'load_more');
function load_more() {
    $paged = $_POST["page"]+1;
    $current_category = $wp_query->get_queried_object();
    $query = new WP_Query( array(
        'post' => 'post',
        'paged' => $paged,
        'cat'  => $current_category
    ));
  while ($query->have_posts()) : $query->the_post(); 
  ?>
  <article class="post-box" id="content">
    <div class="post-img-box">
      <?php if ( has_post_thumbnail() ) {
        the_post_thumbnail();
        } else { ?>
        <img src="<?php bloginfo('template_directory'); ?>/images/blank.png" alt="<?php the_title(); ?>" />
      <?php } ?>
    </div>
    <h5><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>
    <?php the_excerpt(); ?>
    <p class="post-date"><?php the_time('F j, Y'); ?></p>
  </article>
  <?php endwhile;
  wp_reset_postdata();
  die();
}

$current_category = $wp_query->get_queried_object();坏了

我设法用一种迂回的方式解决了这个问题:

1)将$cat_id = get_query_var('cat');添加到wordpress主题页面的顶部。(在我的例子中是index.php).

2)将data-category="<?php echo esc_attr($cat_id); ?>"添加到Load More html按钮标签中。

3)在jQuery .ajax请求中添加data-category到数据请求对象:
$(document).on('click', '.load-more-btn', function() {
        event.preventDefault();
        var that = $(this);
        var page = that.data('page');
        var newPage = page+1;
        var ajaxurl = that.data('url');
        var cat = that.data('category');
        console.log(page);
        $.ajax({
          url : ajaxurl,
          type : 'post',
          data : {
            cat : cat,
            page : page,
            action : 'load_more'
          },
          error: function(response) {
            console.log(reponse);
          },
          success : function(response) {
            that.data('page', newPage);
            $('.more-posts').append(response);
          }
        });
      })

4)将$current_category = $_POST['cat'];添加到php load_more()函数。

我在主页和存档页面上实现了onScroll无限帖子加载。我的做法简单如下:

  1. 定位当前类别ID

    $data = array(
    'processor' => get_template_directory_uri() . '/loopHandler.php',
    'category' => get_query_var('cat'),
    'loader'    => get_template_directory_uri() . '/img/ajax-loader.gif');
    wp_localize_script('ajaxLoop', 'localized_data', $data);
    
  2. 将类别ID发布到query_posts

    data: {numPosts : 1, pageNumber: page, category: localized_data.category },
    
  3. 构建查询参数

    $posts = query_posts(array(
       'posts_per_page' => $numPosts,
       'paged'          => $page,
       'cat'             => $_GET['category']
    ));