Wenprise Pinyin Slug 插件是干什么用的?
在 WordPress 中添加内容时,自动转换下面几项内容为拼音或英文翻译,从而解决中文 URL 带来的 URL 乱码、页面 404 等问题。
- 文章页面的中文别名、文章、页面 URL 中的中文字符
- 分类项目、标签的别名、分类项目、标签 URL 中的中文字符
- 附件文件名中的中文字符
当上面内容内英文时,保持原样。
插件的主要功能
- 转换文章别名为拼音或英文翻译,支持快速编辑时转换
- 转换分类目录、标签或自定义分类法别名为拼音或英文翻译,支持快速编辑时转换
- 当别名为英文,或手动设置了中文别名时,保持原样
- 上传中文附件时,自动重命名中文附件为拼音或英文,避免因操作系统文件名编码不通出现中文文件名乱码的问题
- 支持自定义转换方式为全拼或第一个字母
- 支持设置拼音之间的间隔字符
- 支持截取转换后的拼音或英文翻译为设置的长度
- 支持古腾堡编辑器
为什么需要这个插件?
当 URL 中出现中文时,中文会被自动转码,不知道的人看起来就时一团代码,缺乏可读性。虽然有些浏览器可以在地址栏中显示中文,复制一个中文的 URL 分享给别人的时候,也会显示被编码后乱糟糟的 URL。
不同的操作系统环境,FTP 传输工具使用的文件名编码不同,迁移服务器时,如果文件名编码发生了变换,中文文件名很可能会变成乱码,导致文件不能访问。
什么情况下使用这个插件?
如果你的站点是给客户用的,建议使用这个插件,因为他们很可能不会意识到在 URL 和文件名中使用中文的问题。此插件可以自动帮他们处理。
如果站点是你自己用的,并且你是一个细心的人,发布内容时,会手动编辑别名和文章名,这个插件对你来说就是多余的。不需要安装。
安装方法
在 WordPress 后台插件安装
在插件安装页面搜索「Wenprise Pinyin Slug」,在搜索结果安装并激活就可以使用了。通过这种方式安装的就是一个普通的插件,可以随时禁用和卸载。
通过 Composer 安装
如果你使用 Composer 管理你的项目,可以直接在主题中使用 composer require wenprise/pinyin-slug
命令安装。通过这种方法安装的时候,插件以通过 Composer 自动加载到了主题中,不会出现在插件列表页面,也无法在 WordPress 后台禁用或卸载。
感谢
插件的拼音转换功能使用了 overtrue/pinyin 项目,非常感谢。
如果在使用过程中发现了 Bug 或者有功能性的建议,欢迎在下方的评论中提出。
86 thoughts on “Wenprise Pinyin Slug 插件——自动转换 WordPress URL 中的中文文章别名、分类项目别名、图片文件名称为汉语拼音或英文翻译”
不错,把之前用的两个插件换成了一个。
哈哈,用得开心!
不错的东西,国人的东西还是国人了解,比老外的那个 so pinyin 好用不少!感谢刀刀。
用得开心,有问题欢迎反馈。
安上不起作用
插件只对没有别名的文章(新发表或者手动删除现有别名)起作用,已有别名的文章保持原样。
对的。 对“已有别名”的文章和分类,有办法批量转换吗。 只对新的有效。
首字母模式无效
提供一下 PHP 和 WordPress 版本号。
php7.2.
wordpress5.0.4
好的,我测试一下,如果可以重现问题,修复后会发布新版本,后台更新一下即可。
请问如何禁用上传时文件名转换的功能呢,这与我的另一个插件冲突了
目前无法禁用,下一个版本会加上。
好用的插件,图片上传也能够自动转换slug。
不过,我使用该插件遇到了一个情况,就是contributor角色登陆后台的时候也能看到Wenprise Pinyin Slug插件的settings页面?
已修复,在后台更新即可。
多谢!
安装后出现“该插件没有有效的标题。”
已解决,插件删掉重新安装即可。
安装启用后出现以下错误:
“您的站点遇到了致命错误,请查看您的站点的管理电子邮箱来获得指引。
了解更多在WordPress中调试的信息。”
WordPress: 5.3.2版本
PHP: PHP 7.2 (ea-php72)
WP_DISABLE_FATAL_ERROR_HANDLER 设置为 false, 看一下具体错误。
还是同样的错误。试一下WP_DEBUG设置为true, 显示以下额外信息:
Fatal error: require_once(): Failed opening required ‘/wp-content/plugins/wpforms-lite/includes/providers/class-constant-contact..php’ in /wp-content/plugins/wpforms-lite/includes/class-providers.php on line 55
您的站点遇到了致命错误,请查看您的站点的管理电子邮箱来获得指引。
我认为它与wp_forms无关吧?
看了一下,可能真是 wp-forms 的 bug,下面是 wp-forms 插件中,报错的相关代码。
sanitize_file_name
函数输出的结果后面已经带一个点了,require_once
那一行,最后的「.php」又带了一个点,这就导致了报错中出现的「class-constant-contact..php」,去掉多余的这个点,两个插件都可以正常开启。在没有启用Wenprise pinyin slug 之前,这个文件貌似是不加载的,单独启用 wp forms 可以正常启用。至于为什么启用了 Wenprise pinyin slug 插件会导致 wp forms 加载这个文件。需要进一步调查。
是的,确实是去掉多余的这个点,两个插件都可以正常开启。不过当没有更改wp forms,只禁用Wenprise pinyin slug时,wp forms 可以正常输出「class-constant-contact.php」,没有多余的这个点。只有启用Wenprise pinyin slug之后才会出现这个多余的点。此外如果更改wp forms去掉那个点之后禁用Wenprise pinyin slug,同样导致wp forms报错,找不到「class-constant-contactphp」文件。
这样说的话,可能确实我插件的问题,有修改
sanitize_file_name
函数的输出,稍后我来测试一下。发布了新版本,解决了这个问题,在后台更新就可以了。谢谢你的反馈🙏
谢谢你的无私奉献和支持🙏
可不可以设置以前的文章批量转换,然后标签也转换呢?
以前的文章批量转换会导致原来的链接访问不了,导致权重丢失。所以此功能不会添加。
新版本翻译不生效了
1.4.13版本
PHP 7.3
WordPress 5.4
使用百度翻译,一直都在用的。现在翻译直接是拼音的前几个(全拼)或首字母,以前能翻译成英文,现在无法翻译了。
可以重新保存一下插件设置试试,如果还不可以,我测试一下,会在下个版本中解决。
1、禁用/启用插件
2、首字母/全拼并分别保存更改
分别测试都不是翻译而是标题变成首字母或标题前几个字的拼音。
反复确认了,求大神尽快更新
加 QQ,发给你新版本试一下。
同求新版本。翻译确实不能用了。请发我邮箱。谢谢!
最新版本是 1.5.0,可以从后台直接更新,如果更新后翻译还是不能用,上班时间加我 QQ,帮你排查一下。
确定是1.5.0版本。选择百度翻译,生成拼音首字母(为什么要有这种没有识别意义的选项呢)。
有些站点比较在意网址长度,没那么在意网址的意义。
已经在QQ上反馈了,再描述一下问题:
经过反复测试百度翻译是生效的,但是跟设置的别名字符长度有关
①比如标题有100个字符(就是比如说),设置的是20个字符别名长度,那此时就不会翻译而是直接显示标题的的各个首字母,也就是我们认为翻译没生效;
②比如标题是19个字符(就是比如说),设置的是20个字符别名长度,那此时百度翻译就会自动翻译成因文,也就是我们认为翻译生效了。
不管是形式上有没有翻译成功,这两种模式下,我确认了下百度翻译的后台都是记录了翻译的。
———–
但是往前推2个版本,我默认设置的是15个字符,不管标题多长,都会调用百度翻译的,可能翻译不全但是标题规范,这是我或多数“小白”们想要的功能。
求大神解决这个需求。
发布了新版本,请更新测试。
翻译模式下,别名长度不宜设置过短,会导致达到别名程度限制后的最后一个单词被舍去而出现别名重复的情况。
升级到1.5.1版本完美解决问题。
感谢大神无私奉献和神速处理问题。
也谢谢你的反馈。
很不错的插件,希望可以添加一个功能:
单独为文件名添加一个时间戳或一段随机码,避免文件链接被别人猜测(付费资源站需要),并且减少因文件同名带来的过多资源消耗(如果用户上传了100个名字都为“中文”的图片,WP会检索所有这个名字的附件,然后去加数字尾巴,这个过程是很耗资源的,当然,这个例子比较极端)
或者可以考虑为相应的翻译函数添加钩子,让有需要的人可以通过钩子自定义
给翻译函数加钩子应该是比较好的解决办法,考虑在下个版本中加上。
十分感谢!
新版本已发布,参考以下代码。
$slug 是转换后的别名,$name 是转换前的,$type 是转换类型,可能的值有:post、term、file
好的,再次感谢
也谢谢你的建议!非常宝贵。
刚才测试后发现,你的这个钩子只有在文件名包含中文才可以生效,对于文件名没有中文的,不生效。所以还是建议为文件名翻译的末尾添加一个新钩子,确保非中文文件名的文件也可以添加时间戳等,谢谢
如果需要在所有的文件名后面添加时间戳,可以直接使用sanitize_file_name钩子。
(✿◡‿◡)突然发现自己好傻,O(∩_∩)O哈哈~可以了,谢谢
😎
插件不能识别数字,如何让他输入标题自动转换了,不然怕提交的时候URL不对。
感谢反馈,我找时间测试一下。
这个不会自动翻译 Custom Post Type UI插件新增分类中的文章别名
方便的话,可以加 QQ,给个测试账号密码,帮你调试一下看看。
怎么改角色权限呢?
现在只是管理员有效,如果是投稿者、作者的权限,他们添加的标签名还是中文的。
主管理员是有效的,想增加对其他角色也能使用。
设置文章标签的操作是在发布文章时进行的,编辑以下角色没有发布文章的权限,所以无法实现此插件的功能。这是 WordPress 默认的权限设置,本插件不会去改动这个设置,也不建议通过其他方法进行修改,修改后可能会出现安全问题。
老大,用着不错,感谢你的工具,但发现 ǚ转换成yu,比如情侣,转换后“qing-lyu”,应该是“qing-lv”吧?希望能更正,谢谢辛苦了。
此问题不影响插件功能,不会进行修订,如果一定需要更正,可以使用
wenprise_converted_slug
Filter 进行替换,以达到你需要的效果。谢谢老大的及时回复,就是不知是否影响百度收录,因为url被翻译成拼音后,比如qing-lyu在百度里不是对应“情侣”,而如果是“qing-lv”百度就知道,马上翻译成情侣了,如果能更正是否更加完美,谢谢老大指点用替换工具,我试试,谢谢了!
对了,老大wenprise_converted_slug Filter 这个插件哪里下载,百度找不到?谢谢
遇到一个问题,文章标题中带有字符例如“·”,URL中会被翻译成“-%c2%b7-”,能否去掉标题中的字符?
这个插件写的很好,我是来给你建议的,
一刀说道:
2018/08/20 08:10
插件只对没有别名的文章(新发表或者手动删除现有别名)起作用,已有别名的文章保持原样。
希望改一下,快速编辑的时候,手动将别名换成中文,保存,然后转换成英文,最好支持批量编辑保存,
WP Slug Baidu Translate 这个插件就是这么做的,
现在百度翻译用不了了?
我没有用这个功能,也没有收到过不能用的反馈,有时间我测试一下。
老大,为什么转为拼音了如正确地址是:http://www.touxiangpai.com/gui-mie-zhi-ren.html,但百度收录的在首页显示www.touxiangpai.com/?p=10…,单击百度快照进入发现:百度和网页 http://www.touxiangpai.com/%3Fp%3D10280 的作者无关。地址又变了,不知和你的插件有关吗?谢谢
对了,老大,我发现转换后的拼音地址和转换前的地址都能有效访问,这样造成都被百度收录。能不能只保留转换后拼音的地址就好,避免没转换之前的也被收录,谢谢
这个问题不是本插件要解决的,你可能需要找一下是否有相关的 SEO 插件。
古腾堡编辑器模式下,新建文章时别名不显示,只有写好标题保存草稿或者发布时才自动生成别名。
可否优化成写好标题回车或者点击正文时就自动生成别名,便于二次编辑别名。
考虑过这种方式,实现起来遇到了困难,等有空了会继续尝试。
这个插件非常赞
转英文情况下,标签不转换总是用首字母代替。
现在百度翻译成英文用不了?能不能更新一下?
能不能增加md5随机slug方式
谢谢建议,下个版本中可以考虑添加。
啥时候更新啊 大佬
你好,插件还在更新吗,已有的标签,点击编辑和快速编辑的时候,不会翻译,只有重新添加的标签才会翻译
这是插件的正常特性,为了SEO安全性,插件不会转化已发布的文章或分类slug, 只会转换新发布内容的slug。如需转换已发布内容的slug, 可以尝试把现有内容的slug删除后再保存,应该就会触发自动转换操作了。
标签是以id结构的,别名和id都能打开,几万文章,几万标签,删除了在添加不现实,不然几千文章都得改,其实可以加一个开关,是否开启已存在的标签转换。还有有些词不会转的吗,比如完美世界。
谢谢建议,后续版本会考虑增加这个功能。
你好,发现新版本1.55反而不能转化上传的图片中文名了。
升级到1.5.6即可解决。
想要用百度翻译,填入了appid和密钥密钥效果,还是默认拼音
先用拼音吧,我有空测试一下。
求修复哈哈哈。谢谢☺️
手动添加分类且别名设置为英语,文章为数字id.html或者别名已经设置好了。如果以上这些操作存在,插件就不会自动翻译吗?
如果别名已经存在,就不会再自动翻译了。
目前不开放注册.