переключиться на блог(): Загрузить текстовый домен
Я использую многосайтовую функцию WordPress с Многоязычной прессой Pro для создания многоязычного сайта со связанными публикациями.
В подключаемом модуле, активированном сетью, регистрируются пользовательские типы сообщений. Для перевода пули я использую l10n:
'rewrite' => array(
'slug' => __( 'products', 'text-domain' ) . '/%product-category%',
'with_front' => false
)
Это прекрасно работает. Но для ссылки на переведенный пост на другом сайте в сети используется switch_to_blog()
. Поскольку в рамках этой функции никакие плагины (повторно) не загружаются, мои файлы переводов также не загружаются, поэтому постоянные ссылки, которые я получу, будут неправильными.
Есть ли возможность подключиться к switch_to_blog()
для загрузки другого текстового домена?
Спасибо!
1 answers
Вы могли бы подключиться к действию switch_blog
. Вы получаете новый идентификатор блога в качестве первого аргумента здесь. Но загрузка полных файлов перевода здесь стоит дорого, после этого вам также придется восстанавливать старые файлы.
WordPress использует не собственные функции gettext, а некоторый пользовательский код, который работает намного медленнее. Видишь #17268. Штраф за это будет огромным.
Вместо этого отфильтруйте URL-адреса из плагина, в данном случае mlp_linked_element_link
, и используйте жестко закодированный список замены, подобные этой:
add_filter( 'mlp_linked_element_link', function( $url, $site_id ) {
if ( 1 === (int) $site_id )
return str_replace( '/produkt/', '/product/', $url );
if ( 2 === (int) $site_id )
return str_replace( '/product/', '/produkt/', $url );
return $url;
}, 10, 2 );
Это намного быстрее. Постоянные ссылки и обработка языковых файлов по-прежнему нарушаются в многосайтовых системах, вам приходится мириться с компромиссами.