WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Получить УРЛ языковой версии, на другой языковой версии

Использую плагин языковых версий WPGlobus, который формирует УРЛы таким образом

site.com/page1/ - основная языковая версия (например, ru)
site.com/uk/page1/ - дополнительная версия (uk)

Использую в шаблоне страницы функцию получения УРЛа категории get_category_link()

Соответсвенно, если смотреть страницу site.com/page1/, то функция отдает УРЛ категории - site.com/cat1/
если site.com/uk/page1/, то УРЛ категории - site.com/uk/cat1/, все логично

Но мне нужно на странице site.com/page1/, "заставить" функцию get_category_link() отдавать УРЛ категории site.com/uk/cat1/.

Видимо нужно что-то указать, чтобы функция думала что она на uk версии.

0
maxxwell12 месяц назад
  • 0
    Kama4477

    Тут два варианта.

    1) Если тебе это нужно всегда - например, на языке ru нужны все ссылка на язык en, то просто через хук category_link меняешь получаемый URL, предварительно проверив текущий язык:

    add_filter( 'category_link', 'filter_function_name_1333', 10, 2 );
    function filter_function_name_1333( $termlink, $term_id ){
    	// добавим в ссылку 'en' если язык русский
    	if( функция_получения_тек_языка() == 'ru' ){
    		$termlink = preg_replace('~^((?:https?:)?//[^/]+)?(/.*)~', '$1/en$2', $termlink );
    	}
    
    	return $termlink;
    }

    2) Если нужно для некоторых ссылок (где-то надо добавлять, а где-то нет), то тебе придется создать вспомогательную функцию обертку, которая получает ссылку на указанный вариант языка:

    function get_lang_category_link( $category_id, $lang = 'en' ){
    	$termlink = get_category_link( $category_id );
    
    	return preg_replace('~^((?:https?:)?//[^/]+)?(/.*)~', '$1/'. $lang .'$2', $termlink );
    )

    Далее юзай где нужно get_lang_category_link(), а где нет get_category_link().

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.