apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
- Tipo
- filter
- Categoría
- Recuperar contenido localizado
- 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 WPML → Idiomas. 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 );
}
}
Hooks relacionados
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