看来你在用Ajax Load More 作为一种延迟加载方法。您的div仅显示与“classic”WP查询一起加载的元素,因为load more shortcode与您编写的代码无关:是其他代码,当您的代码已经被解析时执行,运行,还是完成。
浏览它的文档,如果不直接修改它的源文件,我无法找到任何方法将自己插入插件自己的循环,这是一个坏主意。
我的建议是,如果您确实想使用该插件进行延迟加载,请利用其complete
callback function 加载完成后,插入div,每隔5个帖子动态计数一次。You will need to setup ajax on frontend first.
然后将特殊div绑定到ajax操作:
function my_ajax_action(){
echo "<div> Hello! </div>";
}
add_action( \'wp_ajax_nopriv_my_ajax_action\', \'my_ajax_action\' );
并使用一些javascript从前端调用它,以放置在需要此功能的页面的页脚中。
$(function() {
jQuery.fn.insertAt = function(index, element) { //custom function, see below code
var lastIndex = this.children().size();
if (index < 0) {
index = Math.max(0, lastIndex + 1 + index);
}
this.append(element);
if (index < lastIndex) {
this.children().eq(index).before(this.children().last());
}
return this;
}
$.fn.almComplete = function(alm){ //this is the ajax load more\'s callback, view link in answer
jQuery.ajax(//let\'s call our custom ajax action
{
type: "post",
dataType: "json",
url: my_ajax_object.ajax_url, //see link in answer about ajax setup
data: { action:"my_ajax_action" }, //the custom action
success: function(my_div){ //what to do when the div is returned from ajax
jQuery(\'.loaded_posts\').insertAt(4, my_div);
jQuery(\'.loaded_posts\').insertAt(9, my_div);
//fixed values because you know how many posts you call
}
});
}
})(jQuery)
我用了
insertAt
功能来自
this answer.其他资源包括
Wordpress page on AJAX