web-dev-qa-db-fra.com

WPML Traduit Terme

Depuis que j'ai posté sur leur forum et que je n’ai pas eu de réponse, me voilà de nouveau en train de poser la même question. Alors:

J'ai créé un script qui ajoute la possibilité d'ajouter une image et de modifier l'ordre des termes d'une taxonomie personnalisée (appelée itinéraire).

J'utilise donc cette méthode pour obtenir chaque terme, un par un (il n'y a que 10 termes, donc je ne pense pas qu'il y aura de pénalité de performance):

$term = get_term_by('id', $itinerary_id, 'itinerary' );

puis obtenez l'image, la description, l'URL et ainsi de suite.

Le problème que j'ai, cependant, est que je dois avoir un contenu multilingue de manière à conserver l'ordre personnalisé ET l'image personnalisée, de sorte que l'administrateur du site n'a pas à ajouter d'images pour chaque langue (10 termes * 6 langues * autres images chaque semaine ça n'a pas l'air amusant!)

J'ai essayé de creuser un peu dans les tables WPML sql mais je n'ai rien trouvé qui soit en rapport avec les deux (je ne joue plus qu'avec 2 langues, l'anglais et l'italien)

Alors je me demandais s'il y avait quelque chose comme get_translated_term()?

Merci!

1
Ionut Staicu

En fait, il y a déjà quelque chose dans leur API pour cela:

icl_object_id(ID, custom_taxonomy_name, return_original_if_missing,language_code)

Fonctionne comme un charme.

Plus à lire sur ceci: ID dépendants de la langue

5
Ionut Staicu

Je sais que ceci est un ancien post et ma réponse sera donc principalement pour les googlers (comment je suis arrivé ici).

J'aimais l'idée de pouvoir utiliser une fonction comme get_translated_term () comme proposé ci-dessus. Alors je l'ai écrit (mis dans votre functions.php):

function get_translated_term($term_id, $taxonomy, $language) {

    $translated_term_id = icl_object_id($term_id, $taxonomy, true, $language);

    $translated_term_object = get_term_by('id', $translated_term_id, $taxonomy);

    return $translated_term_object->name;
}

Ensuite, à n'importe quel endroit de votre thème, vous pouvez appeler la fonction comme suit:

echo get_translated_term($term_id, 'taxonomy name', ICL_LANGUAGE_CODE);
1
Alain O

L'API WPML a été mise à jour, vous devriez plutôt utiliser ce filtre . Vous vous épargnerez aussi de function_exists().

0
Vuk Vukovic