- availability:
-
WPML Version: 3.2
- description:
-
Returns an element’s ID in the current language or in another specified language.
- type:
- filter
- category:
- Retrieving Localized Content
- parameters:
-
apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
- $element_id
- (int) (Required) The ID of the post type (post, page, attachment, custom post) or taxonomy term (tag, category, custom taxonomy) to filter
- $element_type
- (string) (Required) The type of element the ID belongs to. Can be post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
- $return_original_if_missing
- (bool) (Optional) If set to true it will always return a value (the original value, if translation is missing) Default is FALSE
- $ulanguage_code
- (mixed) (Optional) If missing or NULL, it will use the current language. If set to a language code, it will return a translation for that language code or the original if the translation is missing and $return_original_if_missing is set to TRUE. Default is NULL
- hook example usage:
-
Some basic examples
// 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' );
A more advanced example
/** * 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 ); } }