子比主题修改tag标签固定链接【更新】-zibll综合交流社区-zibll子比主题-zibll子比社区

子比主题修改tag标签固定链接【更新】

原文章好像被我删了,今天用户和我说分页访问404我才发现上次代码的不足

子比的标签固定链接为/tag/tag的别名,而我没添加标签的时候,别名直接与标签名相同,有的时候是汉字,听说不利于seo,下面代码可以帮我们解决这个问题

效果演示

20250725151102876-image-111

代码

// 修改标签链接结构
    function modify_tag_link($link, $term, $taxonomy) {
        if ($taxonomy === 'post_tag') {
            return home_url('/tag/' . $term->term_id . '/');
        }
        return $link;
    }
    add_filter('term_link', 'modify_tag_link', 10, 3);

    // 添加重写规则
    function add_tag_rewrite_rules() {
        add_rewrite_rule(
            'tag/([0-9]+)/?$',
            'index.php?tag_id=$matches[1]',
            'top'
        );
        add_rewrite_rule(
            'tag/([0-9]+)/page/([0-9]+)/?$',
            'index.php?tag_id=$matches[1]&paged=$matches[2]',
            'top'
        );
    }
    add_action('init', 'add_tag_rewrite_rules');

    // 查询变量添加 tag_id 和 paged
    function add_tag_query_vars($vars) {
        $vars[] = 'tag_id';
        $vars[] = 'paged';
        return $vars;
    }
    add_filter('query_vars', 'add_tag_query_vars');

    // 根据 tag_id 修改查询
    function modify_tag_query($query) {
        if (!is_admin() && $query->is_main_query()) {
            $tag_id = get_query_var('tag_id');
            if ($tag_id) {
                $term = get_term($tag_id, 'post_tag');
                if ($term && !is_wp_error($term)) {
                    $query->set('tag', $term->slug);
                    if (get_query_var('paged')) {
                        $query->set('paged', get_query_var('paged'));
                    }
                }
            }
        }
    }
    add_action('pre_get_posts', 'modify_tag_query');

使用教程

将代码上传到function.php里或者func.php里,访问后台,点击设置>固定链接,点击保存,即可有效

请登录后发表评论