将WP_Slug自动转换成成英文Url

一、什么是slug
关于slug其实这是个比较个性化的需求,例如:
默认的链接一般都是以p=123,或者加上年月日,或者是/%postname%/
例如我的博客以前文章链接就是
http://blog.shikey.com/?p=123
http://blog.shikey.com/2017/05/03/?p=123
http://blog.shikey.com/2017/05/03/postname/

其中postname就是slug(文章标题别名)
如果是中文会自动变成utf8的编码,总之很乱,所以我更加倾向于
使用http://blog.shikey.com/2017/05/03/postnam.html这种形式
二、所以这就带来了两个问题及解决办法:
1、如何使wp静态化
这个我使用的是wp-super-cache这个插件
网址:https://wordpress.org/plugins/wp-super-cache/
直接在后台插件面板搜索安装即可,当然同时需要在设置里面设定好链接形式
本人亲测,非常好用。出现问题在官方文档也很容易找到,这个软件的作者更新
还是很勤快的,并且遇到BUG会经常及时处理。
如果你的服务器是Apache驱动可能需要设置一下记得提前将目录属性设置为777。
2、slug别名英文化的问题(slug自动转成英文)
解决办法
2.1)手动进行输入,这个可能比较麻烦,我是比较排斥的
2.2)使用插件,这里我推荐两个插件,目前是可以用的
①cos_slug_translator
作者主页:cos_slug_translator
更新也是long long ago的事情了,不过现在照样可以用。
安装:直接在wp后台插件安装搜索就可以找到,后台安装请注意名称不要错,不然安装成其他的插件就不能用了。
使用的是有道翻译,据说准确度不高,不过本人亲测,还是相对准确的,BUG也不多
有道提供的API可以支持长短句,用这个插件需要自己申请有道的API(以下是简单的申请教程)
申请网址https://ai.youdao.com/?keyfrom=old-openapi
先到上面网址申请注册个帐号,需要手机号验证,提前做好心理准备。
注册好帐号登录,先创建实例(选择自然语言图片有点问题)—>后创建应用—>最后把实例绑定到应用即可得到APPID和密匙了。有些东西不要选错我都用红的地方标注出来了,这里附上简单图片,顺序可能有点问题哈

最后在后台启用你的插件填入你申请的appid和密匙即可
②LS_baidu_translator
作者主页:LS_baidu_translator
目前更新不到1年时间,代码其实就是参考上个插件的。
这个是使用百度翻译的,目前百度翻译的API更换了调用方式
具体怎么使用,可以参考作者主页。这个也是需要自己申请百度翻译API的,申请地址如下:
http://api.fanyi.baidu.com/api/trans/product/index
注意了:
以上两个插件都是直接将中文翻译成英文,如果你需要把英文翻译成中文(估计这么奇葩的事情比较少见),修改插件里面的API参数即可。也可以参考本站的方法修改
  另外百度API和有道的API都有一定限制,百度的每月字符量是100万,差不多是25-50万的字数,有道的则是每个小时不能多于1000次。个人博客更新修改频率再高也是够用了,不要乱搞。
  这些插件全部是在文章发表保存发表的过程中予以执行的,所以使用post、rpc协议等方式发文,估计是识别不了的,就算识别了,如果你使用同步插件发到其他网站,网址也应该是不对的。这个还等高手来解决。
③使用wlw(windows live writer)离线发表文章,可选择插件WindStyle SlugHelper
(目前wlw已经停止更新,现在开源之后更名为open live writer)兼容wlw
如果你选择使用wlw,那么恭喜了你可以不用给本来就比较臃肿的wordpress安装插件了。
安装方法:将dll文件拷贝至Windows Live Writer安装目录下的子目录Plugins(如果没有就自己新建个)下,点击wlw菜单栏的工具-选项-插件启用即可,安装完成后,点击发布文章时便会弹出上述的选择slug生成的窗口:
你可以在发文章的时候选择一下slug处理方式即可,共6种
同标题一致
将标题转换为中文拼音
使用Google将标题翻译为英文(这个已经over了)
使用微软Bing将标题翻译为英文
自定义(这个倒是不错的选择,起码不用忍受登录wordpress后台的痛苦了)
《将WP_Slug自动转换成成英文Url》
注意:貌似google已经不可以用了,还有使用这个插件要注意,不要点取消,取消也会自动发送。另外也不兼容各种自动转发插件(postname不同步)。这个插件是开源的,有兴趣的可以下载下来自己编译修改成其他版本的。
点评一下:
方法1.有道没百度API那么变态,所以服务稳定性应该比较好,不用经常去修复插件。
方法2.百度API现在使用了MD5加密,保密性比较好,不过主要还是速度好,准确率高点。
方法3.懒人专用,不过目前个人博客属于江河日下的趋势,带来的就是wlw之类的软件将来不会受到太多的关注,更新基本是不可能的了,能用几天是几天。
三、网上那些不靠谱的办法(已经失效的)
1、两种免代码自动翻译的。代码如下:

//自动英文格式 www.itbulu.com
function translate_chinese_post_title_to_en_for_slug( $title ) {
$translation_render = ‘http://fanyi.baidu.com/v2transapi?from=zh&to=en&transtype=realtime&simple_means_flag=3&query=’.$title;
$wp_http_get = wp_safe_remote_get( $translation_render );
if ( empty( $wp_http_get->errors ) ) {
if ( ! empty( $wp_http_get[‘body’] ) ) {
$trans_result = json_decode( $wp_http_get[‘body’], true );
$trans_title = $trans_result[‘trans_result’][‘data’][0][‘dst’];
return $trans_title;
}
}
return $title;
}
add_filter( ‘sanitize_title’, ‘translate_chinese_post_title_to_en_for_slug’, 1 );

点评不靠谱原因如下(不知道百度出来那么多都是用的这个代码,误导了大批我这样的小白):
使用php7.0,不申明的情况下,很有可能导致wp直接打不开。
另外每次加载文章都需要执行一下这个函数,对cpu有一定影响,全站都会很卡。
这个版本使用的百度的API调用方式已经发生本质变化,除非你做个数组加密函数,之后再调用。
类似代码bing的基本也不可以用了,bing现在注册需要信用卡,所以bing版本的也不要去尝试了。
类似代码使用youdao翻译的api可以尝试,不过照样会出现上述问题,特别是你的php版本在7.0以上。
使用这些代码编辑器必须选择到本地,在线编辑,保证会出问题。
过段时间我会将免插件版本的代码修改完公布,到时候可以在本站搜索参考。

发表回复