WordPress在搜索时,会自动分词,将空格、加号、%20作为分割,比如我们搜索“150 cm”其实是搜索包含“150”和“cm”的内容,可能就会导致搜索不准确。
可以使用钩子进行精准搜索,防止分词的情况发生,举个例子,我通过下方的代码,就能在搜索时前面两位是数字,后面是cm的搜索进行精准搜索:
add_action('pre_get_posts', function($query){if ($query->is_search && !is_admin()) {//$query->set('post_type', 'product');// 获取搜索词$search_query = $query->get('s');// 如果搜索词是你想要搜索的特定词汇,就不进行分词$first_two_chars = substr($search_query, 0, 2);$last_two_chars = substr($search_query, -2);// 判断前两个字符是否是数字,最后两个是厘米单位if (is_numeric($first_two_chars) and ($last_two_chars === "cm" || $last_two_chars === "センチ")) {$query->set('exact', true); // 设置精确搜索$query->set('sentence', true); // 设置搜索整个句子}}});add_action('pre_get_posts', function($query){ if ($query->is_search && !is_admin()) { //$query->set('post_type', 'product'); // 获取搜索词 $search_query = $query->get('s'); // 如果搜索词是你想要搜索的特定词汇,就不进行分词 $first_two_chars = substr($search_query, 0, 2); $last_two_chars = substr($search_query, -2); // 判断前两个字符是否是数字,最后两个是厘米单位 if (is_numeric($first_two_chars) and ($last_two_chars === "cm" || $last_two_chars === "センチ")) { $query->set('exact', true); // 设置精确搜索 $query->set('sentence', true); // 设置搜索整个句子 } } });add_action('pre_get_posts', function($query){ if ($query->is_search && !is_admin()) { //$query->set('post_type', 'product'); // 获取搜索词 $search_query = $query->get('s'); // 如果搜索词是你想要搜索的特定词汇,就不进行分词 $first_two_chars = substr($search_query, 0, 2); $last_two_chars = substr($search_query, -2); // 判断前两个字符是否是数字,最后两个是厘米单位 if (is_numeric($first_two_chars) and ($last_two_chars === "cm" || $last_two_chars === "センチ")) { $query->set('exact', true); // 设置精确搜索 $query->set('sentence', true); // 设置搜索整个句子 } } });
© 版权声明
THE END
暂无评论内容