WordPress实现将中文标签批量翻译为英文

发布时间:

最近一年在WordPress网站运行期间做了不少优化,但标签部分还没来得及搞,有不少标签的URL链接以及别名还是中文的,这对搜索引擎来说不太友好,看起来也不美观。

近日打算整理一下标签和文章,删除冗余标签,把这一部分优化一下。自己造轮子要费不少时间,关键是也不会,搜索之后发现有不少现成的插件,比如:wp-slug-translate、wenprise-pinyin-slug ,auto-tag-slug。

  • auto-tag-slug:下架,貌似不能用。
  • wp slug translate:下架,未实际测试。
  • wenprise-pinyin-slug:目前可用,可对接百度翻译API,但不支持批量修改中文别名为英文。

以下内容均基于插件: wenprise-pinyin-slug

安装好插件之后只有新标签才能翻译,以前的标签由于不能触发插件的功能不支持修改,手动去修改的话非常浪费时间,针对这个问题继续搜索找到了一篇两年前的文章,文章作者通过拓展插件代码实现了标签的批量翻译。

使用方法:添加到网站根目录/wp-content/plugins/wenprise-pinyin-slug/src下的slug.php文件末尾

//批量翻译Tags
add_filter( 'bulk_actions-edit-post_tag', 'codebye_bulk_actions_tags' );
 
function codebye_bulk_actions_tags( $bulk_array ) {
 
    $bulk_array['trans_chinese_tags'] = '中文别名<a href="https://www.codebye.com/tag/translate" title="查看更多关于翻译的文章" target="_blank">翻译</a>';
    return $bulk_array;
}
 
add_filter( 'handle_bulk_actions-edit-post_tag', 'codebye_bulk_action_handler', 10, 3 );
 
function codebye_bulk_action_handler( $redirect, $doaction, $object_ids ) {
 
    // do something for "中文别名<a href="https://www.codebye.com/tag/translate" title="查看更多关于翻译的文章" target="_blank">翻译</a>" bulk action
    if ( $doaction == 'trans_chinese_tags' ) {
        foreach ( $object_ids as $tax_id ) {       
      wp_update_term($tax_id, 'post_tag', array('slug' => ''));       
        }
    }
 
    return $redirect;
}

上边的方法是在已安装了插件的前提下自行修改,在后台>>插件>>安装插件>>选择下载好的压缩包上传并安装。

启用插件之后在后台标签的页面中点击下拉框即可找到批量翻译的选项(中文别名翻译)

WordPress实现将中文标签批量翻译为英文

选中标签并应用后,标签中文别名将会自动翻译为英文。这里用到了 WordPress 函数 wp_update_term ,由于使用了百度翻译免费的API,官方限定QPS=1,一次勾选太多标签可能会出现无法翻译的情况,请知悉!