You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Houzez主题代码实现三类搜索维度的联合关键词检索

Houzez 主题全维度关键词搜索实现方案

功能现状

  • 主题内置关键词搜索仅提供三类互斥的单维度匹配选项,后台无同时启用全部维度的配置入口:
    • 仅匹配房源标题、正文内容
    • 仅匹配房源地址、街道、邮编、房源ID
    • 仅匹配区域、城市、州级地理信息
  • 涉及的两个前端搜索框模板仅负责渲染输入框的提示文案,实际搜索匹配逻辑并不存放在这两个文件中,对应文件路径分别为:
    • template-parts/search/fields/keyword-banner.php
    • template-parts/search/fields/keyword.php
  • 后台可选配置选项参考截图:可见当前无同时启用全部三类搜索维度的配置入口

实现修改步骤

1. 调整前端搜索框提示文案

两个模板文件原本会根据后台选择的单选项,动态切换搜索框的占位提示语,修改时删掉整段基于houzez_option('keyword_field')判断的if-else代码,直接固定全维度搜索的提示文案即可。

参考替换代码段:

// 替换原来的if-else占位符判断逻辑
$keyword_placeholder = '搜索房源标题、地址、区位、邮编或房源ID';
$keyword = isset ( $_GET['keyword'] ) ? $_GET['keyword'] : '';

修改完成后,无论后台选择哪一种单维度配置,前端搜索框都会统一显示全维度搜索的引导提示。

2. 调整核心搜索匹配逻辑

不要直接修改父主题的核心文件,避免后续主题升级时覆盖自定义改动,所有逻辑修改统一添加到子主题的functions.php文件中。

实现原理:原有搜索逻辑会读取后台的单选项配置,仅把关键词绑定到对应单种字段做匹配。我们通过主题预留的搜索过滤器,跳过原有单维度逻辑,构建三类字段联合的OR关联查询,实现全维度匹配。

参考添加的代码:

add_filter( 'houzez_search_query_args', 'houzez_multi_dimension_keyword_search', 10, 2 );
function houzez_multi_dimension_keyword_search( $args, $search_data ) {
    // 无关键词输入时直接返回原有查询参数
    if( empty( $search_data['keyword'] ) ) {
        return $args;
    }
    $keyword = sanitize_text_field( $search_data['keyword'] );

    // 构建自定义字段的多维度匹配规则
    $meta_query = array(
        'relation' => 'OR',
        // 匹配房源地址、街道、邮编、ID类字段
        array(
            'key' => 'fave_property_address',
            'value' => $keyword,
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'fave_property_zip',
            'value' => $keyword,
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'fave_property_id',
            'value' => $keyword,
            'compare' => '='
        ),
        // 匹配区域、城市、州类地理信息字段
        array(
            'key' => 'fave_property_city',
            'value' => $keyword,
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'fave_property_state',
            'value' => $keyword,
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'fave_property_area',
            'value' => $keyword,
            'compare' => 'LIKE'
        )
    );

    // 合并WordPress原生的标题、内容全文检索,实现三类维度同时匹配
    $args['meta_query'] = $meta_query;
    $args['s'] = $keyword;
    return $args;
}

代码效果:

  • 过滤器优先级高于原有单维度判断逻辑,添加后无论后台选哪个单选项,都会自动走全维度联合查询
  • 同时覆盖房源标题/正文、地址/邮编/ID、区位/城市三类匹配目标
  • 内置关键词安全过滤,不引入额外安全风险

操作注意事项

  • 修改前先备份全站文件,避免操作失误导致站点异常
  • 所有自定义修改优先使用子主题承接,不要直接改动父主题核心代码
  • 修改完成后逐类测试:分别输入房源标题关键词、街道地址、城市名,验证对应房源可被正常检索到

内容的提问来源于stack exchange,提问作者MarianoPim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 13:45:07