WPML
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) →