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 WPMLIdiomas. 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) a ser filtrado
$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 com um código de idioma, retornará uma tradução para esse código de idioma ou o original, caso a tradução esteja ausente e $return_original_if_missing esteja 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 →