用户
ID: 剩余积分:
积分仅限于AI文章写作也可以用于WordPress下的SEO合集插件“智能改写”“词库挖掘”“关键词排名监控”“AI智能DK”功能使用;
充值仅用于消费,不可变更,退款,提现,请慎重选择!
用户邮箱
验证码
暂无数据
自 WordPress 5.5 版本起,官方内置了 XML 站点地图(sitemap)功能,无需额外插件即可为搜索引擎提供站点内容索引指引,极大简化了 SEO 基础配置。但默认生成的 Sitemap 往往 “一刀切”—— 会包含购物车、结账页、个人中心等无需被搜索引擎索引的页面,甚至会暴露用户 Sitemap、非核心分类 Sitemap,既浪费爬虫预算,也可能影响站点收录质量。本文将通过实用的代码示例,教你精准定制 WordPress Sitemap,只展示核心内容。
一、为什么要定制 WordPress Sitemap?
默认 Sitemap 的 “全量输出” 模式存在明显弊端:对于电商、会员类站点而言,购物车、结账页、个人中心等功能性页面仅面向已登录用户,被搜索引擎抓取后不仅无实际价值,还会分散爬虫对核心内容(如产品页、博客文章)的注意力;而用户 Sitemap、非核心分类 Sitemap 的暴露,还可能造成信息冗余甚至隐私泄露。通过简单的代码定制,就能让 Sitemap 精准匹配站点运营需求,提升 SEO 收录效率。
二、排除特定页面(Page)从 Sitemap 中
针对无需被索引的页面,我们可以通过wp_sitemaps_posts_query_args过滤器,精准排除指定页面 ID,仅保留核心页面在 Sitemap 中。
核心代码及解析
add_filter('wp_sitemaps_posts_query_args', 'exclude_pages_from_sitemap', 10, 2);
function exclude_pages_from_sitemap($args, $post_type) {
// 只针对“页面”(page)类型的站点地图生效
if ($post_type === 'page') {
// 要排除的页面ID(替换为你的实际页面ID)
$exclude_ids = [7, 8, 12,14,16,18,9,84]; // 示例:购物车、结账页、个人中心等页面ID
// 将排除的ID添加到查询参数中(post__not_in 表示“不包含这些ID”)
$args['post__not_in'] = isset($args['post__not_in']) ? array_merge($args['post__not_in'], $exclude_ids) : $exclude_ids;
}
return $args;
}
钩子绑定:add_filter将自定义函数exclude_pages_from_sitemap绑定到wp_sitemaps_posts_query_args过滤器,该过滤器专门用于修改生成 Sitemap 时的文章查询参数;参数10是优先级(数值越小优先级越高),2表示函数接收$args(查询参数)和$post_type(内容类型)两个参数。
类型限定:通过$post_type === 'page'限定仅对 “页面” 类型生效,避免影响文章、产品等其他内容的 Sitemap。
排除逻辑:$exclude_ids数组填写需要排除的页面 ID(可在 WordPress 后台编辑页面时,从地址栏post=xxx中获取);post__not_in是 WordPress 核心查询参数,意为 “不包含这些 ID 的内容”,代码中通过isset判断该参数是否已存在,避免覆盖其他配置,保证兼容性。
三、移除用户 Sitemap 和特定分类 Sitemap
默认情况下,WordPress 会生成用户 Sitemap(wp-sitemap-users-1.xml),若站点无需展示用户相关内容,该 Sitemap 无任何价值;此外,部分非核心分类(如产品品牌)的 Sitemap 也可按需移除。
核心代码及解析
add_filter('wp_sitemaps_index_entry', 'remove_user_sitemap_from_index', 10, 2);
function remove_user_sitemap_from_index($entry, $provider) {
// 检查当前条目是否为用户站点地图,或特定分类的Sitemap
if ($provider === 'user' || $entry['loc']=='自己的网址+wp-sitemap-taxonomies-product_brand-1.xml') {
// 返回空数组表示从Sitemap索引中移除该条目
return [];
}
return $entry;
}
过滤器选择:wp_sitemaps_index_entry用于修改 Sitemap 索引页的条目,可控制哪些 Sitemap 文件出现在索引列表中。
精准移除:$provider === 'user'直接匹配 “用户 Sitemap” 的提供者类型,一键移除用户相关 Sitemap;$entry['loc']通过 URL 精准匹配特定分类的 Sitemap,满足个性化移除需求。
生效逻辑:返回空数组[]表示将该条目从索引中删除,搜索引擎将不再抓取对应的 Sitemap 文件。
四、使用注意事项
代码添加位置:建议通过自定义插件(如 Code Snippets)添加,或粘贴到当前激活主题的functions.php文件,避免修改核心文件(更新 WordPress 后会丢失)。
测试验证:添加代码后,访问站点域名 +/wp-sitemap.xml,检查目标页面 / Sitemap 是否已被移除;若未生效,可清除缓存(插件缓存、服务器缓存)后重试。
数据准确:务必确认排除的页面 ID、Sitemap URL 准确,避免误删核心内容。
总结
WordPress 内置的 Sitemap 功能虽便捷,但需结合站点实际需求定制。通过上述代码,我们可精准排除无效页面、移除非核心 Sitemap,让搜索引擎爬虫聚焦于核心内容,最大化利用爬虫预算,提升站点收录质量。你也可根据自身需求扩展代码 —— 比如排除特定文章 ID、隐藏自定义文章类型的 Sitemap 等,灵活适配不同类型的 WordPress 站点。
也可以使用我们的插件seo合集
