Wenprise Pinyin Slug:文件名、网址转拼音或英文

给客户制作的网站,一般都需要考虑得比较全面,其中有一点就是链接网址中的中文处理,中文在网址中通常会显示为乱码,而且附件采用中文名称保存在服务器,在更换主机的过程中,可能会导致文件名称乱码,文件网址失效,这些问题倡萌都是遇到过的。此前倡萌推荐过插件:

WordPress 自动转换中文链接为拼音 SO Pinyin Slugs 

SO Pinyin Slugs 还是非常好用的,但是不支持附件文件名转拼音。今天就推荐 Wenprise Pinyin Slug,一个插件就包含了上面两个功能!

Wenprise Pinyin Slug 自动转换 WordPress 中的中文文章别名、分类项目别名、图片文件名称为汉语拼音或英文(采用百度翻译API)。

插件的主要功能

  • 转换文章别名为拼音或英文,支持快速编辑时转换
  • 转换分类目录、标签或自定义分类法别名为拼音,支持快速编辑时转换
  • 当别名为英文,或手动设置了中文别名时,保持原样
  • 转换中文图片名为拼音
  • 支持自定义转换方式为全拼或第一个字母
  • 支持设置拼音之间的间隔字符
  • 支持截取转换后的拼音为设置的长度
  • 支持古腾堡编辑器

为什么需要这个插件?

当 URL 中出现中文时,中文部分会被自动转码,不知道的人看起来就是一团乱码,缺乏可读性。虽然有些浏览器可以在地址栏中显示中文,复制分享给别人的时候,URL 中文部分显示的也是被转码后的代码。

不同的操作系统环境,FTP 传输工具使用的文件名编码不同,迁移服务器时,如果文件名编码发生了变换,中文文件名很可能会变成乱码,导致文件不能访问。

什么情况下使用这个插件?

如果你的站点是给客户用的,建议使用这个插件,因为他们很可能不会意识到在 URL 和文件名中使用中文的问题。此插件可以自动帮他们处理。

如果站点是你自己用的,并且你是一个细心的人,发布内容时,会手动编辑别名和文件名,这个插件对你来说就是多余的。不需要安装。

插件下载安装

你可以在后台插件安装界面搜索 Wenprise Pinyin Slug 进行安装,或者到官方下载 http://wp101.net/plugins/wenprise-pinyin-slug/ 后上传安装。

为文件名添加时间戳

为了避免用户上传过多同名文件,导致的性能问题,以及避免某些文件被别人猜测文件名,我们可以考虑为文件名加一个时间戳。

只为转换后的文件名加时间戳

如果你希望只对 Wenprise Pinyin Slug 转换后的文件名添加时间戳,可以使用下面的代码。添加到主题的 functions.php 或其他插件文件即可:

/**
 * 替换文件名称为拼音+时间戳
 * https://www.wpdaxue.com/wenprise-pinyin-slug.html
 * @param $slug
 * @param $name
 * @param $type
 *
 * @return string 转换后的拼音+时间戳
 */
add_filter('wenprise_converted_slug', function ( $slug, $name, $type )
{

    if( $type == 'file' ) {
        $slug = $slug.'-'.time();
    }

    return $slug;

}, 99, 3);

注:以上方法只有 Wenprise Pinyin Slug 1.5.2 以上版本才生效!

所有文件名添加时间戳

如果你希望对所有文件名都添加时间戳,同时兼容 Wenprise Pinyin Slug 的转换功能,可以使用下面的代码。添加到主题的 functions.php 或其他插件文件即可:

/**
 * 为所有文件名+时间戳
 * https://www.wpdaxue.com/wenprise-pinyin-slug.html
 * @param $filename
 *
 * @return mixed
 */
add_filter('sanitize_file_name', function ($filename)
{

    $disable_file_convert = wprs_slug_get_option('wprs_pinyin_slug', 'disable_file_convert', 'off');

    if ($disable_file_convert === 'on') {
        return $filename;
    }

    // 手动编辑时,不自动转换为拼音
    $parts = explode('.', $filename);

    // 没有后缀时,直接返回文件名,不用再加 . 和后缀
    if (count($parts) <= 1) {
        if (preg_match('/[\x{4e00}-\x{9fa5}]+/u', $filename)) {
            return wprs_slug_convert($filename, 'file');
        }

        return $filename;
    }

    $filename  = array_shift($parts);
    $extension = array_pop($parts);

    foreach ((array)$parts as $part) {
        $filename .= '.' . $part;
    }

    if (preg_match('/[\x{4e00}-\x{9fa5}]+/u', $filename)) {
        $filename = wprs_slug_convert($filename, 'file');
    }

    $filename .= '-'.time();

    $filename .= '.' . $extension;

    return $filename;


}, 99, 1);

注:以上两种代码根据你的实际需求选择一个即可,不要两个一起用。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
欢迎关注我们的微信公众号:WPDAXUE

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

暂无评论

发表评论