Я сейчас работаю с плагином MultilingualPress и хочу поделиться сниппетом, который поможет вывести свой переключатель языков на сайте.
Для начала получим все переводы
<?php
function multilingualpress_get_translations()
{
if (!is_plugin_active('multilingualpress/multilingualpress.php')) {
return [];
}
$args = \Inpsyde\MultilingualPress\Framework\Api\TranslationSearchArgs::forContext(new \Inpsyde\MultilingualPress\Framework\WordPressContext())
->forSiteId(get_current_blog_id())
->includeBase();
$translations = \Inpsyde\MultilingualPress\resolve(
\Inpsyde\MultilingualPress\Framework\Api\Translations::class
)->searchTranslations($args);
return $translations;
}Функция возвращает массив, с которым мы будем работать в цикле.
Теперь можем выводить
<?php
$translations = multilingualpress_get_translations();
foreach ($translations as $translation) {
$language = $translation->language();
$language_iso_name = esc_html($language->isoName());
$language_locale = esc_attr($language->locale());
$url = esc_url($translation->remoteUrl());
$current_site_class = '';
$source_site_id = (int)$translation->sourceSiteId();
$target_site_id = (int)$translation->remoteSiteId();
if ($source_site_id === $target_site_id) {
$current_site_class = 'active';
}
echo "<a href=\"$url\" class=\"b-header__currency-type $current_site_class\" data-locale=\"$language_locale\">$language_iso_name</a>";
}Стоит обратить внимание на то, как проверяется то, что выводимая ссылка на сайт является ссылкой текущего. Тут просто сравниваются идентификаторы сайтов.
