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

如何为WordPress单一分类(Android)自定义文章固定链接?

WordPress单一分类自定义固定链接解决方案

问题场景

想给WordPress里「Android」分类的文章单独设置固定链接格式:https://example.com/android/mypost/,其他分类的文章保持原有格式(比如https://example.com/mypost2/),但尝试了两段代码并刷新固定链接后,访问新链接出现404错误。

现有代码问题分析

  • 第一段代码:只修改了文章链接的显示内容,但没有给WordPress添加对应的URL重写规则,导致服务器无法识别新的URL结构,返回404。
  • 第二段代码:重写规则里写错了路径标识,把android写成了new_slug,规则完全不匹配,自然无法生效。

正确实现代码

把以下代码添加到主题的functions.php文件中:

// 修改Android分类文章的固定链接显示
add_filter('post_link', 'android_custom_permalink', 10, 3);
function android_custom_permalink($permalink, $post, $leavename) {
    // 仅针对文章类型,且属于Android分类的内容
    if ($post->post_type === 'post' && has_category('android', $post)) {
        $permalink = trailingslashit(home_url('/android/' . $post->post_name . '/'));
    }
    return $permalink;
}

// 添加自定义重写规则,让WordPress识别新的URL结构
add_action('init', 'android_add_rewrite_rules');
function android_add_rewrite_rules() {
    // 匹配/android/文章别名/的结构,映射到对应的文章
    add_rewrite_rule(
        '^android/([^/]+)/?$',
        'index.php?name=$matches[1]',
        'top'
    );
}

// 重定向旧链接到新链接(防止用户访问旧地址)
add_action('template_redirect', 'android_redirect_old_permalink');
function android_redirect_old_permalink() {
    if (is_singular('post') && in_category('android')) {
        $current_url = trailingslashit(get_permalink());
        $expected_url = trailingslashit(home_url('/android/' . get_post()->post_name . '/'));
        // 如果当前访问的不是正确的新链接,就重定向
        if ($current_url !== $expected_url) {
            wp_redirect($expected_url, 301);
            exit;
        }
    }
}

操作步骤

  1. 将上述代码粘贴到当前激活主题的functions.php文件末尾;
  2. 登录WordPress后台,进入「设置」→「固定链接」,不需要修改任何设置,直接点击「保存更改」按钮(这一步会刷新WordPress的重写规则,让新规则生效);
  3. 测试访问Android分类下的文章,确认新链接可以正常打开,旧链接会自动重定向到新链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:16:16