在开始之前,我必须指出以下几点:
您正在主题中使用一个文件向发送AJAX请求,不要这样做,这会带来安全隐患。相反,使用WP-AJAX-API,您将能够删除一半代码并使其正常工作,而无需每次移动站点时都更改URLquery_posts
要进行查询,这几乎总是一件坏事。如果需要查询帖子,请使用get\\u posts或WP\\u查询对象。如果需要更改主查询的功能(例如,仅在主页上显示X),请使用pre_get_posts
筛选如果有一行包含if语句、for循环和赋值,这很糟糕,假设您在错误日志中被告知该行有错误,您如何知道是哪个部分导致了错误如果将偏移量传递给AJAX调用,然后忽略它,在无冲突模式下使用$与jQuery,可能会导致问题,并暗示您正在绑定自己的jQuery,而不是WordPress(jQuery(document)
不$(document)
)关于您的问题,您进行了查询,但您指定了:
query_posts(array(
\'paged\' => $page,
\'post__not_in\' => $last_twelve_ids
));
又名:
Show me all the posts on page X but not these posts: a,b,c,d,e,f, etc
您还没有指定搜索词是什么,那么它怎么知道呢?代码不是通灵的,这里也没有自动魔法来判断你在试图搜索什么,它需要被告知。
为此,lets look at the WP_Query
codex page that lists all the possible parameters
基于关键字搜索显示帖子。
s(字符串)-搜索关键字这给了我们:
$query = new WP_Query(
\'s\' => $search_term
\'paged\' => $page,
\'post__not_in\' => $last_twelve_ids
);
while ( $query->have_posts() ) {
$query->the_post();
// etc
但是我们在AJAX调用中没有传递搜索词,所以它怎么知道要搜索什么呢?我们需要这样的东西来接收它:
$search_term = (isset($_GET[\'searchterm\'])) ? $_GET[\'searchterm\'] : 0;
在AJAX调用中,您需要在此处更改javascript:
data : {pageNumber: pager, offset: 12, searchterm: searchterm },
您需要分配
searchterm
加载调用之前javascript中的一个值,如何实现这一点取决于html,但您尚未提供该值。
完成此操作后,您将获得所需的内容,但仍然存在以下问题:
主题内不安全的AJAX端点(使用WP AJAX API)
javascript中指向网站的硬编码路径(同样,WP AJAX API会解决此问题)PHP,它不会验证输入,并可能导致注入攻击进一步阅读The Codex on WP AJAXUsing AJAX in WordPress - Smashing MagazineYou Don\'t Know Query - Andrew NacinThe Codex on WP_Query