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

如何通过slug将指定URL从Yoast生成的站点地图中排除?

Yoast SEO站点地图按slug/URL排除内容方案

完全可以通过slug实现排除,根据你要排除的内容是否还在后台存在,对应两种实现方案:

方案1:内容仍在后台存在,仅需排除出站点地图

核心逻辑是先通过slug查询到对应内容ID,再传入Yoast官方提供的排除过滤器即可,代码如下:

function exclude_posts_from_xml_sitemaps_by_slug() {
    // 填入需要排除的页面slug,你给出的示例URL对应slug为example2、example3、example4
    $exclude_slugs = [ 'example2', 'example3', 'example4' ];
    $exclude_ids = [];

    foreach ( $exclude_slugs as $slug ) {
        // 若排除的是文章,第二个参数改为'post';自定义文章类型填对应别名即可
        $post = get_page_by_path( $slug, OBJECT, 'page' );
        if ( $post ) {
            $exclude_ids[] = $post->ID;
        }
    }

    return $exclude_ids;
}
add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', 'exclude_posts_from_xml_sitemaps_by_slug' );

方案2:内容已从后台删除,但站点地图仍残留无效URL

首先优先尝试刷新Yoast站点地图缓存:进入后台→Yoast SEO→常规→功能,关闭XML站点地图保存后再重新开启,同时清空站点全局缓存,多数情况下残留URL会自动消失。
如果缓存清理后仍存在,可以直接通过URL匹配过滤站点地图条目,代码如下:

add_filter( 'wpseo_sitemap_entry', function( $url, $type, $post ) {
    // 填入需要排除的完整URL
    $exclude_urls = [
        'https://website/example2',
        'https://website/example3',
        'https://website/example4'
    ];
    if ( in_array( $url['loc'], $exclude_urls ) ) {
        return false;
    }
    return $url;
}, 10, 3 );

注意事项

  • 代码建议添加到子主题的functions.php文件,或使用自定义代码片段插件添加,避免主主题更新后代码被覆盖
  • 添加代码后需要清空缓存再访问站点地图验证生效情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:05