WordPress如何将中文URL自动显示英文

如果您正在创建一个WordPress的中文网站将会发现文章的URL地址的后半段Slug总是显示中文,这既不美观也不利于搜索引擎优化,由于WordPress是国外的工具对中文的拼音的支持并不十分友好,那么如何让网站的URL不出现中文而只显示英文?

有两个方法:

  • 第一个方法是修改PHP代码
  • 第二个方法是使用插件

方法1:修改PHP代码

为了自动将 WordPress 帖子的固定链接(permalink)从中文转换为英文,可以使用 PHP 代码来钩入 WordPress 的发布流程,并将中文标题自动翻译成英文或将其转换为拼音。

以下是一个示例,展示如何使用 slug 过滤器把中文标题转换为英文的拼音形式。你可以将此代码添加到你主题的 functions.php 文件中,或者创建一个自定义插件。

步骤:

  1. 安装 PHP 的拼音转换库:可以使用 PHP 的开源拼音转换库,例如 overtrue/pinyin。该库可以通过 Composer 安装。如果你没有使用 Composer,可以通过其他途径引入拼音转换类。
  2. 在 WordPress 中使用拼音转换:在 functions.php 中编写代码,使用拼音库自动将中文标题转换为拼音。

示例代码:

// 首先确保引入拼音转换库(需要安装 overtrue/pinyin)
require_once 'path_to_your_composer_autoload_file/vendor/autoload.php';

use Overtrue\Pinyin\Pinyin;

// 自动将中文标题转换成拼音作为 slug
function auto_convert_slug_to_pinyin($slug, $post_ID, $post_status, $post_type) {
    // 获取当前的文章标题
    $post_title = get_the_title($post_ID);

    // 如果 slug 为空或是中文标题
    if (empty($slug) || preg_match('/[\x{4e00}-\x{9fa5}]/u', $post_title)) {
        // 创建 Pinyin 类的实例
        $pinyin = new Pinyin();
        
        // 将标题转换为拼音,使用连字符连接
        $slug = $pinyin->permalink($post_title, '-');

        // 更新文章的 slug
        wp_update_post(array(
            'ID' => $post_ID,
            'post_name' => $slug
        ));
    }
    return $slug;
}

// 钩入 WordPress 的保存文章流程,自动生成拼音 slug
add_filter('wp_insert_post_data', 'auto_convert_slug_to_pinyin', 10, 3);

解释:

  • auto_convert_slug_to_pinyin 函数会在保存或发布文章时被调用。
  • 通过 get_the_title($post_ID) 获取文章标题,然后检查是否含有中文字符。
  • 如果发现标题是中文,使用 Pinyin 库将其转换为拼音,并用连字符连接各个拼音词。
  • 最后,通过 wp_update_post() 更新文章的 post_name 字段,即固定链接部分。

安装拼音库的方式:

如果你没有安装 overtrue/pinyin 库,你可以通过 Composer 安装:

composer require overtrue/pinyin

或者使用其他拼音转换方法。

注意事项:

  1. 备份你的 functions.php 文件:在修改前,确保备份你的 WordPress 文件,以防出现问题。
  2. 检查兼容性:确保安装的 WordPress 版本和 PHP 版本与代码兼容。
  3. 性能优化:对于大量的文章,频繁调用外部库可能会影响性能。如果有大量文章需要转换,建议批量处理。

通过这种方式,WordPress 的固定链接就可以根据中文标题自动生成对应的拼音英文 slug 了。

方法2:使用Pinyin Slugs插件

如果你在寻找一款这样的插件会发现很多插件已经不再可以使用,但Pinyin Slugs是少数可以使用的插件。您可以在插件库搜索它并安装。

第一步,去WordPress插件库中搜索Pinyin Slugs,有多个结果但推荐第一个。

第二步,设置Pinyin Slugs。

来到设置中的Pinyin Slugs的设置界面。在这里可以设置转换英文的字数上限,可以按需设置。

注意:

  • Pinyin Slugs并不能自动识别原来帖子的中文Slug,需要手动更新一遍。
  • Pinyin Slugs有时自动翻译出来的英文会不完整。

不过Pinyin Slugs可以解决中文变英文Slug的大部分问题,在没有更好的插件之前值得使用。

error: Content is protected !!