搜索全站
安装部署 12 分钟阅读

WordPress 本地服务类站点搭建:门店信息、地图与评价展示

本地服务站点排名靠的是 NAP 一致性与结构化数据。本文讲清多门店 CPT、地图嵌入、LocalBusiness schema 与评价展示的完整实现,附 JSON-LD 代码。

U
UFO_PF 2018-01-21 · 阅读 12 分钟
Wo 安装部署
阅读提示
本文约 4,705 字,预计阅读 12 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:客户搜”附近开锁”,你的店名在地图上找不到

做家政、维修、开锁、牙科、律所这类本地服务,站点的价值不在于内容多,而在于能不能被”附近的人”找到。很多老板花了钱做官网,结果客户在地图上搜”附近 24 小时开锁”,出现的全是竞品——因为你的站点没有给搜索引擎提供结构化的门店信息:地址格式混乱、营业时间写成了”早八点到晚八点”、电话是手机号还是座机没标清、更没有 LocalBusiness 结构化数据。

本地 SEO 的核心不是关键词密度,而是NAP 一致性(Name、Address、Phone)和地理信号。你的站点、Google Business Profile、各类目录站上的这三项必须逐字符一致,否则搜索引擎会认为这是几家不同的店,权重被稀释,本地包(Local Pack)里自然排不进去。

原理分析:本地站点需要提供的四类信号

信号类型 具体表现 实现方式 权重
NAP 一致性 名称、地址、电话全渠道一致 统一字段,集中管理 高
地理信号 经纬度、服务区域、地图嵌入 GeoCoordinates + 地图 高
时间信号 营业时间、节假日特殊时段 openingHoursSpecification 中
信任信号 评价评分、资质、实景 评价聚合 + 图片 高

其中营业时间必须用结构化字段而不是自然语言。”9:00-18:00 周一至周五”这种写法机器不好解析,应写成 openingHoursSpecification 数组,每个条目含 dayOfWeek、opens、closes。节假日闭店也要单独标注,否则客户大年初一跑过去吃闭门羹,直接给差评。

保姆级实操

步骤 1:门店信息集中到一个 CPT

如果有多个门店,注册 location 文章类型,字段包含:门店名、地址、电话、经纬度、营业时间、服务区域。单店也建议这么做,因为字段化后 schema 输出可以直接读这些值,而不是从正文里硬编码。

步骤 2:把 NAP 写成可复用的片段

在主题里定义一个输出 NAP 的函数,全站所有位置(头部、页脚、联系页、schema)都调用它,从根上保证一致:

function mf_nap( $post_id = 0 ) {
    $post_id = $post_id ?: get_the_ID();
    return array(
        'name'    => get_post_meta( $post_id, '_loc_name', true ) ?: get_bloginfo( 'name' ),
        'street'  => get_post_meta( $post_id, '_loc_street', true ),
        'city'    => get_post_meta( $post_id, '_loc_city', true ),
        'region'  => get_post_meta( $post_id, '_loc_region', true ),
        'postal'  => get_post_meta( $post_id, '_loc_postal', true ),
        'phone'   => get_post_meta( $post_id, '_loc_phone', true ),
        'lat'     => (float) get_post_meta( $post_id, '_loc_lat', true ),
        'lng'     => (float) get_post_meta( $post_id, '_loc_lng', true ),
    );
}

步骤 3:输出 LocalBusiness 结构化数据

这是本地站最关键的一步。用 wp_head 为门店页输出 JSON-LD:

add_action( 'wp_head', function () {
    if ( ! is_singular( 'location' ) ) {
        return;
    }
    $nap = mf_nap();
    $schema = array(
        '@context' => 'https://schema.org',
        '@type'    => 'LocalBusiness',
        'name'     => $nap['name'],
        'telephone' => $nap['phone'],
        'address'  => array(
            '@type'           => 'PostalAddress',
            'streetAddress'   => $nap['street'],
            'addressLocality' => $nap['city'],
            'addressRegion'   => $nap['region'],
            'postalCode'      => $nap['postal'],
            'addressCountry'  => 'CN',
        ),
        'geo' => array(
            '@type'     => 'GeoCoordinates',
            'latitude'  => $nap['lat'],
            'longitude' => $nap['lng'],
        ),
        'openingHoursSpecification' => array(
            array(
                '@type'     => 'OpeningHoursSpecification',
                'dayOfWeek' => array( 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ),
                'opens'     => '09:00',
                'closes'    => '18:00',
            ),
            array(
                '@type'     => 'OpeningHoursSpecification',
                'dayOfWeek' => 'Saturday',
                'opens'     => '10:00',
                'closes'    => '16:00',
            ),
        ),
        'priceRange' => '$$',
    );
    echo '<script type="application/ld+json">' .
        wp_json_encode( $schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) .
        '</script>';
} );

上线后用 Google 的富媒体结果测试工具验证,确认没有必填字段缺失的警告。

步骤 4:地图嵌入要兼顾加载速度

直接内嵌 Google Maps iframe 会拖慢页面。推荐做法是首屏放一张静态地图缩略图(或截图),点击后再加载真正的 iframe——即”点击加载”模式。若用 Leaflet 这类轻量库,配合 OpenStreetMap 瓦片国内访问更稳。插件可选 WP Store Locator(自带门店搜索与地图)或 Leaflet Map。

步骤 5:评价展示要真实且可验证

不要手写几条”张先生:服务很好”。要么接入 Google 评价(Smash Balloon 的 Reviews Feed 类插件或 Trustindex 的 Google Reviews 插件,走官方 API 拉取),要么在站内做真实评价收集并在展示时带上时间与服务项目。聚合评分可以加到 schema 的 aggregateRating 字段,但必须是真实数据的平均值,虚构评分属于违规,被识别后会失去富媒体展示资格。

步骤 6:绑定 Google Business Profile

站点之外必须去认领 Google Business Profile(原 Google My Business),填写的 NAP 与站点逐字符一致,上传实景照片,并在站点上链回你的商家主页。这一步对本地包排名的贡献往往大于站内优化。

步骤 7:每家门店一个独立页面

多门店不要挤在一个页面里。每家门店一个 URL,含独立 NAP、地图、营业时间、该店的实景照片和该店的评价。这样每家店都能参与本地搜索。

常见踩坑

  1. NAP 在不同页面写法不一致:有的写”北京市朝阳区XX大厦A座”,有的写”朝阳区XX大厦 A 座”,搜索引擎会当成两条记录。
  2. 营业时间只写自然语言:机器无法解析成结构化时段,本地搜索结果里不会显示”营业中”。
  3. schema 里写了假的 aggregateRating:Google 明确禁止自评式评分,被检测到会移除富媒体结果甚至手动处罚。
  4. 地图 iframe 直接全站加载:每页多 300KB 和数个第三方请求,移动端首屏明显变慢。
  5. 多门店共用一个页面:每家店都失去了独立排名的机会。
  6. 案例:某连锁家政的”权重稀释”:8 家门店共用一张联系页,且大众点评、官网、Google 上的电话分别是座机、400、手机号三种,Google 认为存在 5 个不同实体,本地包里长期排不到前三。统一 NAP 并拆成 8 个独立门店页 + 各自 schema 后,半年内 6 家门店进入本地包。
  7. 节假日营业时间不更新:春节照常显示”营业中”,客户白跑一趟,差评直接影响后续排名。

总结

本地服务站点是否做对,三个标准:NAP 在所有渠道是否逐字符一致、每家门店是否有独立的 URL 和结构化数据、评价是否真实可验证且能体现在 schema 中。行动清单:先把门店信息字段化并统一 NAP 输出函数,再为每个门店页输出 LocalBusiness JSON-LD,然后把地图改成点击加载模式,最后认领 Google Business Profile 并保持信息同步。本地站不需要海量内容,把这几件事做扎实,排名就会稳定。如果你的门店还涉及菜单与特殊营业时段,见 餐饮门店站菜单与营业时间;页面加载速度的要求可参考 落地页高性能制作。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。