将 .po 和 .mo 格式添加到 WordPress

Add .po and .mo format to WordPress

提问人:Benjamin 提问时间:11/8/2023 最后编辑:Benjamin 更新时间:11/9/2023 访问量:41

问:

我需要在我设计的 WordPress 主题的一部分中添加一些格式,例如 icosvg,我通过将以下代码放入文件中来完成:functions.php

function upload( $mime_types ) {
  $mime_types[ 'svg' ] = 'image/svg+xml';
  $mime_types[ 'ico' ] = 'image/vnd.microsoft.icon';
  return $mime_types;
}
add_filter( 'upload_mimes', 'upload', 1, 1 );

现在我想向 WordPress 介绍两种格式以获得支持。.po and .mo

我唯一的问题是我不知道这两种格式是什么,无论我搜索什么,我都没有找到任何东西。

有谁知道这两种格式的类型? 或者我可以用于它们吗?application/msword (.doc)


编辑:

我找到了以下格式教程,但仍然找不到格式类型:.po and .mo

打开PO文件

介质类型

wordpress 上传 po poedit mo

评论


答:

1赞 kofeigen 11/8/2023 #1

Dyn 对这个问题的回答 如何为 gettext .po 文件制作标头? 有你对文件的答案:.po

只需下载一个示例 .po 文件,然后使用常规文本编辑器查看内部。标头包含以下信息:“
Content-Type: text/plain;字符集 = UTF-8\n”

的 MIME 类型为:text/plain。.po

至于文件,这是一个二进制文件。RFC 2046 (MIME) Part Two: Media Types说道:.mo

“应用程序”媒体类型用于不属于任何其他类别的离散数据,特别是用于由某种类型的应用程序处理的数据。
“octet-stream”子类型用于指示正文包含任意二进制数据。

可用于的 MIME 类型为:application/octet-stream。.mo

更新

看起来至少有两种方法可以尝试:

  1. wp_check_filetype_and_ext和
  2. ALLOW_UNFILTERED_UPLOADSwp-config.php

我已经测试了两者。他们都在 WordPress 6.4 版上工作。

wp_check_filetype_and_ext

Nathan Johnson 对这个问题的回答:允许上传 CSV 文件使用 WordPress 过滤器钩子wp_check_filetype_and_ext。这个钩子的 WordPress 文档说它:

筛选给定文件的“真实”文件类型。

wp_check_filetype_and_ext除了 mime_types 筛选器挂钩或upload_mimes筛选器挂钩之外,还允许至少具有“作者”角色的用户上传和提交文件。您可以更密切地关注 Nathan Johnson 的回答,将此上传权限限制为特定用户角色。请参阅下面的代码示例。.po.mo

代码示例

function add_my_mimes( $mime_types ) {
    $mime_types['mo'] = "application/octet-stream";
    $mime_types['po'] = "text/plain";

    return $mime_types;
}
add_filter( 'upload_mimes', 'add_my_mimes' );


// Add filter to check filetype and extension
function wpse_check_filetype_and_ext( $args, $file, $filename, $mimes ) {
    $extension = pathinfo( $filename )[ 'extension' ];
    if ( 'mo' === $extension ) {
        $args = array(
            'ext'             => 'mo',
            'type'            => 'application/octet-stream',
            'proper_filename' => $filename,
        );
    } elseif ( 'po' === $extension ) {
        $args = array(
            'ext'             => 'po',
            'type'            => 'text/plain',
            'proper_filename' => $filename,
        );
    }
    return $args;
}
add_filter( 'wp_check_filetype_and_ext', 'wpse_check_filetype_and_ext', 10, 4 );

ALLOW_UNFILTERED_UPLOADS

在此WP Engine帖子中的非图像文件上传错误标题下建议的更新WordPress中的MIME类型说:wp-config.php

将以下行添加到 wp-config.php 文件。这将仅允许管理员上传非图像:

define( 'ALLOW_UNFILTERED_UPLOADS', true );  

评论

0赞 Benjamin 11/9/2023
你好。我之前尝试过这两种模型,但 WordPress 不允许上传。这就是为什么我说我找不到想要的类型。这两个文件(.po 和 .mo)没有特定的类型?WordPress支持这些文件吗?
0赞 Benjamin 11/9/2023
我认为即使文件输入正确,WordPress仍然不允许您上传这些文件。也许这是WordPress的局限性之一。因为我检查了这些类型的问题,我意识到它们都没有在 WordPress 中上传此类文件。
0赞 Benjamin 11/9/2023
虽然我的问题没有解决,但我接受你的回答,因为无论我搜索什么,我都得到了相同的答案。感谢您抽出宝贵时间接受采访。
0赞 kofeigen 11/9/2023
@Benjamin 嗨。我用两种可能的解决方案更新了我的答案。
0赞 Benjamin 11/9/2023
谢谢。我的问题完全解决了。我轻松地将文件(.po 和 .mo)上传到 WordPress。再次感谢您为我编写的宝贵建议和代码。