如何在WordPress中利用Elementor Query ID实现仅标题关键词搜索
实现Elementor Post组件仅按标题搜索
要让Elementor的Post组件只展示标题包含关键词的文章,需要修改自定义查询逻辑,替换WordPress默认同时匹配标题和内容的搜索行为,具体代码修改如下:
add_action("elementor/query/blogs_search", function ($query) { // 移除默认搜索参数,避免匹配文章内容 $query->set("s", ""); // 获取URL中的搜索关键词 $search_term = isset($_GET["s"]) ? htmlentities($_GET["s"]) : ""; if (!empty($search_term)) { // 过滤查询语句,仅匹配文章标题 add_filter("posts_search", function ($search, $wp_query) use ($search_term) { global $wpdb; if ($wp_query->is_main_query()) { // 安全处理关键词,防止SQL注入 $safe_term = '%' . $wpdb->esc_like($search_term) . '%'; // 替换默认搜索逻辑,只针对标题做模糊匹配 $search = " AND {$wpdb->posts}.post_title LIKE '{$safe_term}'"; } return $search; }, 10, 2); } });
代码说明:
- 清空默认的
s参数,阻止WordPress执行标题+内容的全局搜索 - 通过
$_GET["s"]获取用户输入的搜索关键词,做基本转义处理 - 借助
posts_search过滤器修改SQL查询语句,仅对post_title字段做模糊匹配 - 使用
$wpdb->esc_like处理关键词,避免SQL注入风险
内容的提问来源于stack exchange,提问作者Manikandan V
相关产品推荐
相关产品推荐

