根据保存的搜索条件通知用户

时间:2018-07-31 22:41:17

标签: php jquery ajax wordpress search

我一直在研究保存的搜索功能,而且几乎已经完成,我只需要方程式最后一部分的帮助。我能够运行一个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 attacksSQL injections,例如,验证nonces,用户ID以及类似内容的方法(因为我对这类资料还很缺乏经验),同时也提供了可扩展性方面的建议,因为我计划将来在我的网站上拥有几十万到几百万个用户,因此,您建议什么是运行此任务的最有效方法?由于我正在尝试为此创建一个近乎实时的通知系统,因此一旦创建了与其保存的搜索条件/首选项匹配的新帖子,便会立即通知用户。希望我已经解释得足够清楚了。我很乐意回答您可能遇到的任何问题,并尝试帮助您澄清其他需要澄清的问题。

任何帮助将不胜感激!谢谢

0 个答案:

没有答案