it-swarm.com.de

WPML mit WP_Query für alle 3 Sprachen

Ich habe etwas dazu in den WPML-Support-Foren, aber ich dachte, ich könnte auch hier nachfragen. Hier sind die wichtigen Informationen: Ich führe ein WP Multisite-Setup mit benutzerdefinierten Beitragstypen, benutzerdefinierten Feldern und allem, was scheint, benutzerdefiniert aus. In einer bestimmten Vorlagendatei gibt es eine sekundäre Schleife, die eine Liste von Elementen aus einem anderen Blog abruft. Soweit ich erfuhr, sollte alles, was die WP -API verwendet, nur auf die aktuelle Sprache heruntergefiltert werden, aber keine der WP_Query()-Funktionen, die ich habe, tut dies.

Relevanter Code:

<?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();
?>

Hier gibt es zwei Probleme: Erstens werden Ergebnisse aus jeder Sprache anstelle der aktuellen Sprache zurückgegeben - derselbe Beitrag, dreimal (EN, FR, DE). Zweitens ist das Ergebnis von get_permalink() völlig falsch - es spuckt aus http://www.mysite.com/blog23name/postname statt http://www.mysite.com/blog23name/lang/posttype/ postname - der benutzerdefinierte Permalink, der auf der Seite "Beitrag bearbeiten" angezeigt wird.

Irgendwelche Ideen?

8
SickHippie

Meine Lösung bestand darin, die benutzerdefinierten Beitragstypen auf der Site zu registrieren, von der aus ich sie aufrufe, und sie dann in den WPML-Einstellungen für die Übersetzung festzulegen. Dies finden Sie in WPML -> Übersetzungsmanagement -> Einrichtung mehrsprachiger Inhalte unten. Ich gehe davon aus, dass dies funktioniert, indem WP dazu verleitet wird, die Umschreib-/Übersetzungsregeln dieser Site zu verwenden, wenn sie nicht die richtigen Informationen von switch_to_blog() enthält.

2
SickHippie