Javascript WordPress中关于AJAX调用的重复帖子

Javascript WordPress中关于AJAX调用的重复帖子,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我试图在WordPress中设置“加载更多”按钮。简单的想法是,您按下按钮,它就可以使用AJAX加载更多帖子,而无需重新加载页面或使用分页 我遵循了一个关于SO的原则,并设法使其大部分工作正常 到目前为止,我已经能够很好地加载额外的帖子,但由于某些原因,它们正在被复制。我查看了Networks选项卡,似乎每次按下按钮,admin-ajax.php都会运行两次,我怀疑这是导致重复的原因。不幸的是,我不太确定我需要改变什么来解决这个问题 了解如何使其适用于自定义帖子类型以及普通帖子也会非常有帮助。在

我试图在WordPress中设置“加载更多”按钮。简单的想法是,您按下按钮,它就可以使用AJAX加载更多帖子,而无需重新加载页面或使用分页

我遵循了一个关于SO的原则,并设法使其大部分工作正常

到目前为止,我已经能够很好地加载额外的帖子,但由于某些原因,它们正在被复制。我查看了Networks选项卡,似乎每次按下按钮,admin-ajax.php都会运行两次,我怀疑这是导致重复的原因。不幸的是,我不太确定我需要改变什么来解决这个问题

了解如何使其适用于自定义帖子类型以及普通帖子也会非常有帮助。在我的网站上,我有两种帖子类型,标准博客帖子和定制的“项目”帖子类型。每一个都有自己的页面和循环,我如何修改上面的内容以使其同时工作?我需要把整件事写两遍吗?或者更简单一点

有什么想法吗,伙计们

以下是HTML:

<section id="ajax-posts" class="layout">
    <?php get_template_part( 'content', 'blog' ); ?>
</section>
<div class="load-more layout">
  <a id="more_posts" class="button"><span class="icon-plus"></span></a>
</div>
你投了两次球

wp_localize_script( 'bigredpod-script', 'ajax_posts', array(
    'ajaxurl' => admin_url( 'admin-ajax.php' ),
    'noposts' => __('No older posts found', 'bigredpod'),
));

wpt\u theme\u js()函数中。这可能是导致ajax加载两次的原因。

谢谢Denis,我设法解决了这个问题,但谢谢你为我指明了正确的方向。原来是因为我加载了两次“main.js”文件,其中包含AJAX代码。现在,我将尝试让这个工作的自定义职位,任何帮助将再次非常感谢!基本上重复整个过程,并在查询中添加
post\u type
。您可以通过创建单独的模板手动执行此操作,也可以在类别页面模板中执行此操作,或者您可以在隐藏字段中指定帖子类型,然后在js中获取它,然后将其作为
$\u post
键推送(有点棘手,但可行)
function wpt_theme_js() {

wp_enqueue_script( 'bigredpod-script', get_template_directory_uri() . '/js/main.js', array( 'jquery' ), '', true );
wp_localize_script( 'bigredpod-script', 'ajax_posts', array(
    'ajaxurl' => admin_url( 'admin-ajax.php' ),
    'noposts' => __('No older posts found', 'bigredpod'),
));

}

wp_localize_script( 'bigredpod-script', 'ajax_posts', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'noposts' => __('No older posts found', 'bigredpod'),
));

function more_post_ajax(){

$ppp = (isset($_POST["ppp"])) ? $_POST["ppp"] : 1;
$page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0;

header("Content-Type: text/html");

$args = array(
    'suppress_filters' => true,
    'posts_per_page' => $ppp,
    'paged'    => $page,
);

$loop = new WP_Query($args);

$out = '';

if ($loop -> have_posts()) :  while ($loop -> have_posts()) : $loop -> the_post();
    $out .= 

        '<article id="post-'. get_the_ID().'" class="'. implode(' ', get_post_class()) .'">
            <a href="'.get_the_permalink().'">'.get_the_post_thumbnail().'</a>
            <div class="inner-text">
        <h4 class="post-title">'.get_the_title().'</h4>
        <h5><span class="icon-calendar"></span> '.get_the_date().'</h5>
        <p>'.get_the_excerpt().'</p>
        <a href="'.get_the_permalink().'" class="button">Read More<span class="icon-arrow-right2"></span></a>
          </div>
        </article>';

endwhile;
endif;
wp_reset_postdata();
die($out);
}

add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_more_post_ajax', 'more_post_ajax'); ?>
jQuery(document).ready(function($) {
var ppp = 1; // 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){
            $("#ajax-posts").append($data);
            $("#more_posts").addClass('posts_loading');
        } else{
            $("#more_posts").removeClass('posts_loading').addClass('no_more_posts');
        }
    },
    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();
  });
});
wp_localize_script( 'bigredpod-script', 'ajax_posts', array(
    'ajaxurl' => admin_url( 'admin-ajax.php' ),
    'noposts' => __('No older posts found', 'bigredpod'),
));