Глобальный хук для term name
Подскажите пожалуйста, какой хук использовать, чтобы переписывать заголовок терминов (любых, кастомных и стандатных). Сейчас дописываю свой скрипт мультиязычности. Вот пример на the_title:
function translate_title( $title, $id = null ) {
$item = get_post( $id );
if ( $item->post_type != 'nav_menu_item' ) {
global $lang;
if ($lang != 'ru') {
$translated = get_post_meta($id, 'title_' . $lang, true);
if (empty($translated)) {
$translated_fallback = get_post_meta($id, 'title_en', true);
if (empty($translated_fallback)) {
return $title;
} else {
return $translated_fallback;
}
} else {
return get_post_meta($id, 'title_' . $lang, true);
}
} else {
return $title;
}
} else {
return $title;
}
}
add_filter( 'the_title', 'translate_title', 10, 2 );
Данный код успешно переводит как заголовки на странице, так и заголовки в меню.
А вот код, который я написал для категорий:
function translate_cat_title( $term_name ) {
global $lang;
if ($lang != 'ru') {
$translated = get_term_meta( get_cat_ID( $term_name ), 'name_' . $lang, true );
if (empty($translated)) {
$translated_fallback = get_term_meta( get_cat_ID( $term_name ), 'name_en', true );
if (empty($translated_fallback)) {
return $term_name;
} else {
return $translated_fallback;
}
} else {
return get_term_meta( get_cat_ID( $term_name ), 'name_' . $lang, true );
}
} else {
return $term_name;
}
}
add_filter( 'single_cat_title', 'translate_cat_title' );
Как видно из кода - он работает для single_cat_title, но элементы меню уже не переводит и, подозреваю, не будет переводить кастомные термины (ещё не успел проверить).
Короче, вроде сам решил)) Работает великолепно, ошибок не выдаёт:
function translate_term_title( $term ) { global $lang; if ($lang != 'ru') { $term->name = get_term_meta( $term->term_id, 'name_' . $lang, true ); return $term; if (empty($translated)) { $translated_fallback = get_term_meta( $term->term_id, 'name_en', true ); if (empty($translated_fallback)) { return $term; } else { return $translated_fallback; } } else { $term->name = get_term_meta( $term->term_id, 'name_' . $lang, true ); return $term; } } else { return $term; } } add_filter( 'get_term', 'translate_term_title' );