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

WordPress 4.9.1单站点有永久链接转译选项,多站点缺失求解

为什么WordPress多站点缺失西里尔文转拉丁文永久链接选项?怎么恢复?

这个问题我之前维护WordPress多站点时碰到过,本质是多站点的权限架构和默认设置逻辑导致的,我来给你拆解原因和解决办法:

问题原因

WordPress单站点里的「西里尔文转拉丁文永久链接」选项,本质属于**permalink sanitization(永久链接清理)**的一部分,单站点模式下这个选项开放给站点管理员自主控制。但在多站点模式下:

  1. 核心默认把这类全局影响的设置权限收归给了网络管理员,单个站点的「设置/常规」页面会隐藏或禁用这个选项;
  2. 在WordPress 4.9.1的多站点版本中,官方并没有在网络后台的「网络设置」面板里添加对应的开关,导致这个功能直接被“藏起来”,单个站点管理员完全看不到选项入口。

解决办法

根据你的需求(全局所有站点生效,还是单个站点单独设置),有两种方案可选:

方案一:全局开启并恢复单个站点的设置选项(推荐)

如果你是网络管理员,想要让所有站点都能自主开关这个转译功能,可以通过添加一个**必须使用插件(MU Plugin)**来实现:

  1. 在服务器的wp-content文件夹下,创建mu-plugins子文件夹(已存在则跳过);
  2. 在mu-plugins里新建transliterate-permalinks.php文件,粘贴以下代码:
<?php
/*
Plugin Name: Enable Transliteration for Multisite
Description: Restores Cyrillic to Latin transliteration option for permalinks in WordPress Multisite
Version: 1.0
*/

// 处理实际的转译逻辑
add_filter('sanitize_title', 'sanitize_title_with_cyrillic_transliteration', 10, 3);
function sanitize_title_with_cyrillic_transliteration($title, $raw_title, $context) {
    if ($context === 'save' && get_option('permalink_transliterate', true)) {
        // 西里尔文转拉丁文映射表
        $cyrillic = array('а','б','в','г','д','ђ','е','ж','з','и','ј','к','л','љ','м','н','њ','о','п','р','с','т','ћ','у','ф','х','ц','ч','џ','ш','А','Б','В','Г','Д','Ђ','Е','Ж','З','И','Ј','К','Л','Љ','М','Н','Њ','О','П','Р','С','Т','Ћ','У','Ф','Х','Ц','Ч','Џ','Ш');
        $latin = array('a','b','v','g','d','dj','e','zh','z','i','j','k','l','lj','m','n','nj','o','p','r','s','t','c','u','f','h','c','ch','dz','sh','A','B','V','G','D','Dj','E','Zh','Z','I','J','K','L','Lj','M','N','Nj','O','P','R','S','T','C','U','F','H','C','Ch','Dz','Sh');
        $title = str_replace($cyrillic, $latin, $title);
        $title = remove_accents($title);
    }
    return $title;
}

// 在单个站点的「设置/常规」页面恢复转译选项
add_action('admin_init', 'add_transliteration_option_to_multisite');
function add_transliteration_option_to_multisite() {
    if (is_multisite() && current_user_can('manage_options')) {
        add_settings_field(
            'permalink_transliterate',
            __('Transliterate Permalinks', 'default'),
            'render_transliteration_setting_field',
            'general',
            'default',
            array('label_for' => 'permalink_transliterate')
        );
        register_setting('general', 'permalink_transliterate', array(
            'type' => 'boolean',
            'default' => true,
            'sanitize_callback' => 'rest_sanitize_boolean'
        ));
    }
}

function render_transliteration_setting_field() {
    $enabled = get_option('permalink_transliterate', true);
    echo '<input type="checkbox" id="permalink_transliterate" name="permalink_transliterate" value="1" ' . checked(1, $enabled, false) . ' />';
    echo '<label for="permalink_transliterate">' . __('Convert Cyrillic characters to Latin in permalinks.', 'default') . '</label>';
}
  1. 保存文件后,所有站点的「设置/常规」页面底部就会恢复转译选项,站点管理员可自主开关,代码会自动处理转译逻辑。

方案二:仅针对单个站点开启转译

如果你只需要给第二个站点单独开启功能,不需要显示设置选项,可直接在该站点的主题functions.php文件末尾添加以下代码:

// 为当前站点实现西里尔文转拉丁文永久链接
add_filter('sanitize_title', 'custom_cyrillic_to_latin', 10, 3);
function custom_cyrillic_to_latin($title, $raw_title, $context) {
    if ($context === 'save') {
        $cyrillic = array('а','б','в','г','д','ђ','е','ж','з','и','ј','к','л','љ','м','н','њ','о','п','р','с','т','ћ','у','ф','х','ц','ч','џ','ш');
        $latin = array('a','b','v','g','d','dj','e','zh','z','i','j','k','l','lj','m','n','nj','o','p','r','s','t','c','u','f','h','c','ch','dz','sh');
        $title = str_replace($cyrillic, $latin, $title);
        $title = remove_accents($title);
    }
    return $title;
}

这段代码会自动将该站点的西里尔文标题转译为拉丁文永久链接,无需额外设置。

注意:如果后续更换主题,记得把这段代码复制到新主题的functions.php里,或者改用MU插件方案更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:52:32