WPML
apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )
Type
filter
Version de WPML
3.2

Description

Renvoie l’ID d’un élément dans la langue actuelle ou dans une autre langue spécifiée.

Par défaut, WPML ajuste automatiquement les ID pour afficher tous les éléments du thème dans la langue actuelle. Ce paramètre est activé par défaut sur la page WPMLLangues. Toutefois, si vous créez votre propre thème à partir de zéro, utilisez la fonction wpml_object_id pour ajuster manuellement les ID. Cette approche est plus efficace en termes de traitement.

Arguments

$element_id
(int) (Requis) L’ID du type de publication (article, page, pièce jointe, publication personnalisée) ou du terme de taxonomie (étiquette, catégorie, taxonomie personnalisée) à filtrer
$element_type
(string) (Requis) Le type d’élément auquel l’ID appartient. Peut être post, page, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}
$return_original_if_missing
(bool) (Facultatif) Si défini sur true, il renverra toujours une valeur (la valeur d’origine, si la traduction est manquante). La valeur par défaut est FALSE
$ulanguage_code
(mixed) (Facultatif) S’il est manquant ou NULL, la langue actuelle sera utilisée. S’il est défini sur un code de langue, il renverra une traduction pour ce code de langue ou l’original si la traduction est manquante et que $return_original_if_missing est défini sur TRUE. La valeur par défaut est NULL

Exemple d’utilisation

Quelques exemples de base
// 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 exemple plus avancé
/**
 * 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

Les 12 hooks de la catégorie Récupération du contenu localisé →