WordPress 分类和标签页链接结尾添加/斜杠

编辑于:2023年06月05日

WordPress 分类和标签页链接结尾添加/斜杠

WordPress 固定链接 自定义结构以.html结尾时,分类和标签页的链接尾部将不会以/结尾,这样的链接一般是无法被缓存的。

三种纯代码添加斜杠的方法

任选一种代码,复制到所用主题 functions.php 底部保存生效

// 方法一:为分类法和标签法的 URL 后缀添加斜杠
function add_trailing_slash_to_term_links( $termlink, $term, $taxonomy ) {
    // 判断当前分类法是否为标签法或者分类法
    if ( 'post_tag' == $taxonomy || 'category' == $taxonomy ) {
        // 为 URL 后缀添加斜杠
        $termlink = trailingslashit( $termlink );
    }
    // 返回处理后的 URL
    return $termlink;
}
// 添加钩子:当生成分类法或标签法链接时,将调用该函数进行处理
add_filter( 'term_link', 'add_trailing_slash_to_term_links', 10, 3 );
// 方法二:为 URL 添加斜杠
function nice_trailingslashit($string, $type_of_url) {
    // 判断 URL 是否为单篇文章页面、页面、单篇文章分页
    if ( $type_of_url != 'single' && $type_of_url != 'page' && $type_of_url != 'single_paged' ) {
        // 如果 URL 不是以上三种类型,则为其添加斜杠
        $string = trailingslashit($string);
    }
    // 返回处理后的 URL
    return $string;
}
// 添加钩子:当生成 URL 时,将调用该函数进行处理,由于这种处理不针对特定的分类法或标签,所以使用的是 user_trailingslashit 钩子
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);
// 方法三:为分类法 URL 后缀添加斜杠
add_action( 'init', 'add_taxonomies_slash' );
function add_taxonomies_slash() {
    // 为标签添加斜杠,URL 结构为 /tag/%tag%/
    register_taxonomy( 'post_tag', array( 'post' ), array(
        'rewrite' => array( 'slug' => 'tag/', 'with_front' => false ),
        // 其他参数
    ) );

    // 为分类法添加斜杠,URL 结构为 /category/%category%/
    register_taxonomy( 'category', array( 'post' ), array(
        'rewrite' => array( 'slug' => 'category/', 'with_front' => false ),
        // 其他参数
    ) );
}

三种方法的优缺点

第一段代码使用的是 term_link 过滤器,只针对分类法和标签法的 URL 后缀进行处理,其优点是简单易用,如果只需要处理这两种 URL 后缀,可以优先选择这种方法。

第二段代码使用的是 user_trailingslashit 过滤器,可以为不同类型的 URL 添加斜杠,其优点是可以针对不同类型的 URL 进行自由设置,但其缺点是需要手动添加代码,相对来说使用略有麻烦。

第三段代码侧重于分类法的设置,可以为不同分类法的 URL 后缀添加斜杠,相对来说更适合为网站进行全面的 URL 后缀设置。在使用该方法时,需要先注册相关分类法,并在注册时指定 URL 结构和其他参数。

需要注意的是,在上述方法中,trailingslashit() 函数用于为 URL 添加结尾的斜杠。它的作用是确保 URL 的规范性和美观性,并且在 SEO 方面也有一定的作用。

原链接需要加301跳转吗

给标签和分类增加上斜杠后,需要对原链接设置 301 重定向到新链接吗?虫子菌实测,不用做额外的操作,WordPress 会自动做 301 跳转。具体你可以实际测试测试。

相关推荐

暂无评论