web-dev-qa-db-fra.com

WPML avec WP_Query servant les 3 langues

J'ai quelque chose à ce sujet sur les forums de support WPML, mais je me suis dit que je pourrais aussi poser la question ici. Voici les informations importantes: Je suis en train d’exécuter une WP configuration multisite avec des types de publication personnalisés, des champs personnalisés et tout ce qui semble personnalisé. Dans un fichier modèle particulier, j'ai une boucle secondaire qui extrait une liste d'éléments d'un autre blog. D'après ce que j'ai pu comprendre, tout ce qui utilise l'API WP devrait être filtré uniquement dans la langue actuelle, mais aucune de mes fonctions WP_Query() ne le fait.

Code pertinent:

<?php 
 switch_to_blog(23);
$args = array('post_type' => 'release-notes',
    'suppress_filters' => 0,
    'meta_query' => array(
            array(
                'key' => 'related_products',
                'value' => $thisproduct,
                'compare' => 'LIKE'
            )
        )
    );
$loop = new WP_Query($args);
if ($loop->have_posts()) {
    echo '<h2>Release Notes</h2>';
    while ( $loop->have_posts() ) : $loop->the_post();
        //echo '<pre>';
        //print_r($post);
        //echo '</pre>';
        $post_link = ($post->post_name);
        echo '<p><a class="text-link" href="' . get_permalink() . '">' . get_the_title() . '</a></p>';
    endwhile; // foreach($posts
} // if ($results
restore_current_blog();
?>

Le problème est double: tout d’abord, il renvoie les résultats de toutes les langues au lieu de la langue actuelle - le même message, trois fois (EN, FR, DE). Deuxièmement, le résultat de get_permalink() est complètement faux - il crache http://www.mysite.com/blog23name/postname au lieu de http://www.mysite.com/blog23name/lang/posttype/ postname - le lien permanent personnalisé indiqué sur la page "Modifier le message".

Des idées?

8
SickHippie

Ma solution consistait à enregistrer les types de publication personnalisés sur le site d'où je l'appelle, puis dans les paramètres de WPML, configurez-les pour la traduction. C’est dans WPML -> Gestion de la traduction -> Configuration du contenu multilingue, en bas. Je suppose que cela fonctionne en incitant WP à utiliser les règles de réécriture/traduction de ce site quand il ne dispose pas des informations appropriées provenant de switch_to_blog().

2
SickHippie