переключиться на блог(): Загрузить текстовый домен


Я использую многосайтовую функцию WordPress с Многоязычной прессой Pro для создания многоязычного сайта со связанными публикациями.

В подключаемом модуле, активированном сетью, регистрируются пользовательские типы сообщений. Для перевода пули я использую l10n:

'rewrite'   => array(
        'slug' => __( 'products', 'text-domain' ) . '/%product-category%',
        'with_front' => false
        )

Это прекрасно работает. Но для ссылки на переведенный пост на другом сайте в сети используется switch_to_blog(). Поскольку в рамках этой функции никакие плагины (повторно) не загружаются, мои файлы переводов также не загружаются, поэтому постоянные ссылки, которые я получу, будут неправильными.

Есть ли возможность подключиться к switch_to_blog() для загрузки другого текстового домена?

Спасибо!

Author: luke, 2015-06-15

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 );

Это намного быстрее. Постоянные ссылки и обработка языковых файлов по-прежнему нарушаются в многосайтовых системах, вам приходится мириться с компромиссами.

 6
Author: fuxia, 2015-06-15 12:15:23