从WordPress模板上传翻译文件(.mo和.po)

i7uq4tfw  于 2023-11-17  发布在  WordPress
关注(0)|答案(1)|浏览(185)

我想在functions.php文件中放入一个函数,这样当用户激活模板时,所有扩展名为**.mo.po**的文件都会被复制到wp-content\languages\themes路径。
为此,我使用了以下代码,但没有工作:

function load_the_languages() {
 load_theme_textdomain( 'themePro', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'load_the_languages' );

字符串
我用来写上面函数的源码:
load_theme_textdomain()
请帮我创建一个函数,可以将所有扩展名为**.mo.po**的文件复制到wp-content\languages\themes路径。
上面的代码是我经过大量的搜索后得到的,我希望有更好的方法来做到这一点。
提前感谢任何帮助。

xuo3flqw

xuo3flqw1#

函数load_theme_textdomain()用于加载主题的翻译文件,但它实际上并不将文件复制到不同的位置。如果你想在主题激活时将.mo和.po文件从主题的languages目录复制到wp-content/languages/themes directory,你可以使用after_switch_theme钩子,它在主题切换后触发。

function copy_language_files_to_global_directory() {
    $source_directory = get_template_directory() . '/languages';
    $destination_directory = WP_CONTENT_DIR . '/languages/themes';

    if (!is_dir($destination_directory)) {
        wp_mkdir_p($destination_directory);
    }

    // Copy .mo and .po files
    foreach (glob($source_directory . '/*.{mo,po}', GLOB_BRACE) as $file) {
        $destination_file = $destination_directory . '/' . basename($file);
        if (!file_exists($destination_file)) {
            copy($file, $destination_file);
        }
    }
}
add_action('after_switch_theme', 'copy_language_files_to_global_directory');

字符串
希望有帮助!

相关问题