WPML
apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
Tipo
filter
Versión de WPML
3.2

Descripción

Devuelve el ID de un elemento en el idioma actual o en otro idioma especificado.

De forma predeterminada, WPML ajusta automáticamente los ID para mostrar todos los elementos del tema en el idioma actual. Esta configuración está «activada» de forma predeterminada en la página WPMLIdiomas. Pero si está creando su propio tema desde cero, utilice la función wpml_object_id para ajustar los ID manualmente. Este enfoque es más eficiente en términos de procesamiento.

Argumentos

$element_id
(int) (Obligatorio) El ID del tipo de contenido (entrada, página, adjunto, entrada personalizada) o término de taxonomía (etiqueta, categoría, taxonomía personalizada) a filtrar
$element_type
(string) (Obligatorio) El tipo de elemento al que pertenece el ID. Puede ser post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
$return_original_if_missing
(bool) (Opcional) Si se establece en true, siempre devolverá un valor (el valor original, si falta la traducción). El valor predeterminado es FALSE
$ulanguage_code
(mixed) (Opcional) Si falta o es NULL, utilizará el idioma actual. Si se establece en un código de idioma, devolverá una traducción para ese código de idioma o el original si falta la traducción y $return_original_if_missing está establecido en TRUE. El valor predeterminado es NULL

Ejemplo de uso

Algunos ejemplos 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' );
Un ejemplo más avanzado
/**
 * 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

Los 12 hooks de Recuperar contenido localizado →