我一直在研究保存的搜索功能,而且几乎已经完成,我只需要方程式最后一部分的帮助。我能够运行一个wp_query
来检查用户保存的某个查询的found_posts
,但是我不确定如何检查用户保存的搜索查询日期之间的差异。用户以及系统运行搜索的日期。为了进一步说明,例如,假设某个用户保存搜索时有20条帖子,而第二天又创建了一个与该用户的搜索条件相匹配的新帖子,那么我该如何检查和识别新帖子具有被添加符合该条件?
这是我到目前为止所拥有的:
function run_search_query() {
global $wpdb;
$results = $wpdb->get_results( "SELECT parameter FROM queries");
$added_time = $wpdb->get_results( "SELECT added_time FROM queries");
foreach($results as $key => $value) {
foreach($added_time as $atime => $time) {
$new_time = $added_time[$atime]->added_time;
}
$url = parse_url($results[$key]->search_parameter, PHP_URL_QUERY);
$str = parse_str($url, $new_str);
$args = array(
'post_type' => 'ads',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'search-name',
'value' => $new_str['search-name'],
'compare' => 'IN'
),
array(
'key' => 'make',
'value' => $new_str['make'],
'compare' => 'IN'
),
array(
'key' => 'serie',
'value' => $new_str['model'],
'compare' => 'IN'
)
),
'date_query' => array(
'before' => $new_time,
'inclusive' => true
)
);
$auto_query = new WP_Query( $args );
echo 'Auto Query: ' . $auto_query->found_posts . ' ';
}
die();
}
add_action('wp_ajax_run_search_query', 'run_search_query');
add_action('wp_ajax_nopriv_run_search_query', 'run_search_query');
我也在寻求有关安全编写此方法的建议,以避免可能的XSS attacks
或SQL injections
,例如,验证nonces
,用户ID以及类似内容的方法(因为我对这类资料还很缺乏经验),同时也提供了可扩展性方面的建议,因为我计划将来在我的网站上拥有几十万到几百万个用户,因此,您建议什么是运行此任务的最有效方法?由于我正在尝试为此创建一个近乎实时的通知系统,因此一旦创建了与其保存的搜索条件/首选项匹配的新帖子,便会立即通知用户。希望我已经解释得足够清楚了。我很乐意回答您可能遇到的任何问题,并尝试帮助您澄清其他需要澄清的问题。
任何帮助将不胜感激!谢谢