web-dev-qa-db-fra.com

WPML Obtenir l'URL sans générer de sortie

Je suis en train de migrer de qTranslate vers WPML pour gérer mes langues.

Avec qTranslate, j’avais un moyen très simple d’obtenir une URL à une page ou à un message en sachant que c’était un slug: $url = get_language_url(home_url($slug));

Maintenant, avec WPML, je ne peux pas trouver un moyen de le faire ...

Il y a la fonction icl_link_to_element mais elle génère directement le lien dans une balise. De plus, vous devez connaître l'identifiant de la publication.

De toute façon, je peux obtenir un lien vers un message dans la bonne langue, sachant que c'est slug?

3
fkoessler

En fait, Wordpress manque d'une fonction réelle pour obtenir des posts par slug/post-name. Mais vous pouvez utiliser get_page_by_path () pour ne pas avoir à utiliser de requête personnalisée:

if(function_exists('icl_object_id')) {
   $post = get_page_by_path('your-slug');
   $id = icl_object_id($post->ID,'post',true);
   $link = get_permalink($id);
}

La seule différence est que vous devez utiliser le chemin complet, à savoir ('parent-page/sub-page') si vous avez une structure hiérarchique. Pour les publications et les pages non hiérarchiques, vous pouvez simplement utiliser le slug comme paramètre.

3
s1lv3r

Vous pouvez obtenir un lien vers un message par son slug en utilisant le code suivant.

<?php
global $wpdb;
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = 'name-of-slug'");
    if(function_exists('icl_object_id')){
        get_permalink(icl_object_id($id,'post',true)); 
    }
?>
0
Vinod Dalvi