Javascript WordPress中关于AJAX调用的重复帖子
我试图在WordPress中设置“加载更多”按钮。简单的想法是,您按下按钮,它就可以使用AJAX加载更多帖子,而无需重新加载页面或使用分页 我遵循了一个关于SO的原则,并设法使其大部分工作正常 到目前为止,我已经能够很好地加载额外的帖子,但由于某些原因,它们正在被复制。我查看了Networks选项卡,似乎每次按下按钮,admin-ajax.php都会运行两次,我怀疑这是导致重复的原因。不幸的是,我不太确定我需要改变什么来解决这个问题 了解如何使其适用于自定义帖子类型以及普通帖子也会非常有帮助。在我的网站上,我有两种帖子类型,标准博客帖子和定制的“项目”帖子类型。每一个都有自己的页面和循环,我如何修改上面的内容以使其同时工作?我需要把整件事写两遍吗?或者更简单一点 有什么想法吗,伙计们 以下是HTML:Javascript WordPress中关于AJAX调用的重复帖子,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我试图在WordPress中设置“加载更多”按钮。简单的想法是,您按下按钮,它就可以使用AJAX加载更多帖子,而无需重新加载页面或使用分页 我遵循了一个关于SO的原则,并设法使其大部分工作正常 到目前为止,我已经能够很好地加载额外的帖子,但由于某些原因,它们正在被复制。我查看了Networks选项卡,似乎每次按下按钮,admin-ajax.php都会运行两次,我怀疑这是导致重复的原因。不幸的是,我不太确定我需要改变什么来解决这个问题 了解如何使其适用于自定义帖子类型以及普通帖子也会非常有帮助。在
<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'),
));