Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A faster load_textdomain for WordPress
<?php
/*
Plugin Name: A faster load_textdomain
Version: 0.0.1
Description: While we're wating for https://core.trac.wordpress.org/ticket/32052.
Author: Per Soderlind
Author URI: https://soderlind.no
Plugin URI: https://gist.github.com/soderlind/610a9b24dbf95a678c3e
License: GPL
Save the plugin in mu-plugins. You don't have to, but you should add an an object cache. See benchmarks at https://core.trac.wordpress.org/ticket/32052#comment:7
Credit: nicofuma , I just created the plugin based on his patch (https://core.trac.wordpress.org/ticket/32052)
*/
function a_faster_load_textdomain($retval, $domain, $mofile) {
global $l10n;
if ( !is_readable( $mofile ) ) return false;
$data = get_transient(md5($mofile));
$mtime = filemtime($mofile);
$mo = new MO();
if (!$data || !isset($data['mtime']) || $mtime > $data['mtime']) {
if ( !$mo->import_from_file( $mofile ) ) return false;
$data = array(
'mtime' => $mtime,
'entries' => $mo->entries,
'headers' => $mo->headers
);
set_transient(md5($mofile), $data);
} else {
$mo->entries = $data['entries'];
$mo->headers = $data['headers'];
}
if ( isset( $l10n[$domain] ) ) {
$mo->merge_with( $l10n[$domain] );
}
$l10n[$domain] = &$mo;
return true;
}
add_filter('override_load_textdomain','a_faster_load_textdomain',1,3);
@wpsumo

This comment has been minimized.

Copy link

@wpsumo wpsumo commented Jun 30, 2021

@soderlind How will this play with WPML cache? Think they use JSON. How do you verify it is working as it should and stored in Redis object cache, do you SCAN?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment