WPML
apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
Tipo
filter
Versão do WPML
3.2

Descrição

Retorna o ID de um elemento no idioma atual ou em outro idioma especificado.

Por padrão, o WPML ajusta automaticamente os IDs para exibir todos os elementos do tema no idioma atual. Essa configuração está ativada por padrão na página WPML → Configurações → Idiomas. Mas, se você estiver criando seu próprio tema do zero, use a função wpml_object_id para ajustar os IDs manualmente. Essa abordagem é mais eficiente em termos de processamento.

Argumentos

$element_id
(int) (Obrigatório) O ID do tipo de post (post, página, anexo, post personalizado) ou termo de taxonomia (tag, categoria, taxonomia personalizada) para filtrar
$element_type
(string) (Obrigatório) O tipo de elemento ao qual o ID pertence. Pode ser post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
$return_original_if_missing
(bool) (Opcional) Se definido como true, sempre retornará um valor (o valor original, se a tradução estiver ausente). O padrão é FALSE
$ulanguage_code
(mixed) (Opcional) Se ausente ou NULL, usará o idioma atual. Se definido como um código de idioma, retornará uma tradução para esse código de idioma ou o original se a tradução estiver ausente e $return_original_if_missing estiver definido como TRUE. O padrão é NULL

Exemplo de uso

Alguns exemplos básicos
// 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' );
Um exemplo mais avançado
/**
 * 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

Todos os 12 hooks de Recuperar conteúdo localizado