apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
- Тип
- filter
- Категория
- Получение локализованного контента
- Версия WPML
- 3.2
Описание
Возвращает ID элемента на текущем языке или на другом указанном языке.
По умолчанию WPML автоматически корректирует ID, чтобы отображать все элементы темы оформления на текущем языке. Эта настройка по умолчанию включена на странице WPML → Языки. Но если Вы создаете собственную тему оформления с нуля, используйте функцию wpml_object_id для ручной корректировки ID. Этот подход более эффективен с точки зрения производительности.
Аргументы
- $element_id
- (int) (Обязательно) ID типа записи (запись, страница, вложение, произвольная запись) или термина таксономии (метка, рубрика, произвольная таксономия) для фильтрации
- $element_type
- (string) (Обязательно) Тип элемента, которому принадлежит ID. Может принимать значения: post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
- $return_original_if_missing
- (bool) (Необязательно) Если установлено значение true, всегда будет возвращаться значение (исходное значение, если перевод отсутствует). По умолчанию — FALSE
- $ulanguage_code
- (mixed) (Необязательно) Если отсутствует или равно NULL, будет использоваться текущий язык. Если задан код языка, будет возвращен перевод для этого кода языка или оригинал, если перевод отсутствует и для $return_original_if_missing установлено значение TRUE. По умолчанию — NULL
Пример использования
Некоторые базовые примеры
// will return the post ID in the current language for post ID 1 echo apply_filters( 'wpml_object_id', 1, 'post' ); // will return the category ID in the current language for categoy ID 4. If the translation is missing it will return the original (here: category ID 4) echo apply_filters( 'wpml_object_id', 4, 'category', TRUE ); // will return the German attachment ID for attachment ID 25. If the translation is missing it will return NULL echo apply_filters( 'wpml_object_id', 25, 'attachment', FALSE, 'de' );
Более сложный пример
/**
* Returns the translated object ID(post_type or term) or original if missing
*
* @param $object_id integer|string|array The ID/s of the objects to check and return
* @param $type the object type: post, page, {custom post type name}, nav_menu, nav_menu_item, category, tag etc.
* @return string or array of object ids
*/
function my_translate_object_id( $object_id, $type ) {
$current_language= apply_filters( 'wpml_current_language', NULL );
// if array
if( is_array( $object_id ) ){
$translated_object_ids = array();
foreach ( $object_id as $id ) {
$translated_object_ids[] = apply_filters( 'wpml_object_id', $id, $type, true, $current_language );
}
return $translated_object_ids;
}
// if string
elseif( is_string( $object_id ) ) {
// check if we have a comma separated ID string
$is_comma_separated = strpos( $object_id,"," );
if( $is_comma_separated !== FALSE ) {
// explode the comma to create an array of IDs
$object_id = explode( ',', $object_id );
$translated_object_ids = array();
foreach ( $object_id as $id ) {
$translated_object_ids[] = apply_filters ( 'wpml_object_id', $id, $type, true, $current_language );
}
// make sure the output is a comma separated string (the same way it came in!)
return implode ( ',', $translated_object_ids );
}
// if we don't find a comma in the string then this is a single ID
else {
return apply_filters( 'wpml_object_id', intval( $object_id ), $type, true, $current_language );
}
}
// if int
else {
return apply_filters( 'wpml_object_id', $object_id, $type, true, $current_language );
}
}
Связанные хуки
wpml_media_url, wpml_media_id, force_suppress_filters, wpml_get_translated_slug, wpml_home_url, wpml_translate_single_string, wpml_translate_string, wpml_elements_without_translations, wpml_permalink, wpml_unfiltered_admin_string
Все хуки категории «Получение локализованного контента» (12) →