如何避免绕过搜索栏规则?

时间:2019-06-14 作者:sound wave

我正在本地建立我的网站。

因为我希望用户只能在搜索栏中编写特定的术语,所以我在wp-content\\themes\\sitename\\js文件夹中放置了一个jQuery脚本。这个脚本运行得很好,但我注意到可以用一种简单的方式绕过它。

例如,假设搜索栏只接受包含3个字符的字符串,那么如果我写abcd 然后按enter键,我会得到一个错误,但如果我写abc 然后按enter键,它就会工作Search Results 页面将包含url

http://localhost/sitename/?s=abc
但是修改url就足够了

http://localhost/sitename/?s=abcd
然后按enter键,绕过搜索栏脚本。

如何避免这种情况?

我有2个想法,使用函数get_search_query, 或者从url中删除关键字,使url独立于关键字,例如

http://localhost/sitename/search
但我不知道如何使用该函数,也不知道如何从url中删除关键字(如果可能的话)。

1 个回复
SO网友:MikeNGarrett

您想使用pre_get_posts 在服务器端修改搜索查询的操作。这个pre_get_posts Codex 有一些例子可以让你开始学习。

要以主搜索查询为目标,请尝试以下操作:

function my_search_filter( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        if ( $query->is_search ) {
            // Use $query->set(); to do stuff here.
        }
    }
}
add_action( \'pre_get_posts\', \'my_search_filter\' );

相关推荐

按自定义域的第一个字母筛选自定义WP_QUERY-希望使用Search和Filter Pro?

我有一个自定义WP\\U查询,它可以非常简单地过滤自定义帖子类型:<?php $query = new WP_Query( array( \'post_type\' => \'professionals\', \'search_filter_id\' => \'204\' ) ); ?> 输出如下所示:<div id=\"results\"> <?php if (