在Wordpress中,我需要使用不同的布局,具体取决于我是在存档还是单个帖子页面。但是,我的插件代码是从单个帖子模板content.php。
运行的在页面上加载我的初始检查是否在存档页面上is_archive(),在pre_get_posts过滤器内返回 TRUE 但是当我使用Ajax加载新的发布数据时is_archive == FALSE < / strong>即可。这是有道理的,因为Ajax只是查询任何模板层次结构之外的帖子数据。
我想知道是否有办法保存一些持久数据,让我的插件知道每个帖子当前都在一个存档页面而不是一个帖子页面/模板。
content.php
do_action('init-my-plugin');
插件代码
add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ) );
public function pre_get_posts( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
$this->is_archive = false;
if ( is_archive() || is_home() || is_post_type_archive() ) {
$this->is_archive = true;
}
}
}
// Later on in my code
if ($this->is_archive) {
$this->layout1();
}
else {
$this->layout2();
}
jquery的
// Click event handler: Initiate Ajax request
$(document).on("click", '.nav a', function(e) {
e.preventDefault();
$this = $(this);
link = $this.attr('href');
$.post( link, function(data) {
// Do something with new Post Data
var post = $(data);
});
});