【问题标题】:wp AJAX load more plugin repeating the same previous postswp AJAX 加载更多插件重复相同的先前帖子
【发布时间】:2019-03-20 10:22:25
【问题描述】:

我使用 wp ajax 加载更多 plugin 在单击按钮时,它会重复上一篇文章。如何修复它。在这里,我在下面分享我的代码:

<?php
       $the_query = new WP_Query( array(
       'posts_per_page'=>10,//on loading page i show 10 after click load more i want to show other posts
       'post_type'=>'post-name',
       'category_name' => 'A-E',
       'orderby'=> 'title',
       'order'   => 'ASC',
       'paged' => get_query_var('paged') ? get_query_var('paged') : 1) 
      ); 
?>
<?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>

// here I print the following data

 <?php
      endwhile;
 ?>

 <?php
      echo do_shortcode('[ajax_load_more post_type="post-name" posts_per_page="10" category="a-e" button_label="Load More"]');
  ?>

有人能解决吗?

【问题讨论】:

  • 你没有通知插件你已经打印了 10 个帖子 :)
  • 您是否缺少一些短代码参数?在这里:[ajax_load_more post_type="post-name" posts_per_page="10" category="a-e" button_label="Load More"],我想你还需要传递“paged”参数,这就是你不加载的原因下一页,总是一页。对吗?
  • 请发布您的简码。这就是您遇到的问题的根源。
  • 看我的问题我在@designtocode下面添加了短代码
  • 我要求生成 [ajax_load_more] 的 php 代码。您是否将其添加到您的 functions.php 文件中还是另一个插件?

标签: php ajax wordpress load


【解决方案1】:

我只是用它来解决我自己的问题:

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

 $do_not_duplicate[] = $post->ID; // Store post ID in array
  // Other loop actions could go here

 endwhile; wp_reset_query();  

 $post__not_in = ($do_not_duplicate) ? implode(',', $do_not_duplicate) : '';     
 echo do_shortcode('[ajax_load_more post__not_in="'. $post__not_in .'" post_type="post-name" posts_per_page="10" category="a-e" button_label="Load More"]');

【讨论】:

    【解决方案2】:

    如果您想获得带有ajax-load-more 的下一组页面,您必须使用偏移量参数。 ajax-load-more 插件必须获得 WP_Query 的下一个帖子。所以 WP_Query 和ajax-load-more 都必须查询相同的页面。首先通过添加orderorderby 参数将短代码更改为与WP_Query 相同:

    [ajax_load_more post_type="post-name" posts_per_page="10" order="ASC" orderby="title" category="a-e" button_label="Load More"]
    

    然后像这样添加offset=(get_query_var('paged') ? get_query_var('paged') : 1)*10

    [ajax_load_more post_type="post-name" offset='.((get_query_var('paged') ? get_query_var('paged') : 1)*10).' posts_per_page="10" order="ASC" orderby="title"  category="a-e" button_label="Load More"]
    

    注意:好像ajax-load-more 不知道-,所以你必须用, 分隔categorypost_type。除非您实际上有一个名为 a-e 的类别

    【讨论】:

    • 它的工作。我用另一种方式添加post__not_in
    【解决方案3】:

    您无需创建自定义查询。您正在使用一个插件,它将通过他们的简码为您生成它。根据他们的文档,您可以为短代码创建设置。

    在此处查看说明https://connekthq.com/plugins/ajax-load-more/docs/shortcode-builder/

    只需将生成的短代码粘贴到您的页面/帖子或带有do_shortcode 的 php 文件中。

    插件处理查询和每页的帖子等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2021-08-19
      相关资源
      最近更新 更多