Ich habe etwas darüber in den WPML-Support-Foren, aber ich dachte, ich könnte auch hier fragen. Hier sind die wichtigen Informationen: Ich führe ein WP Multisite-Setup mit benutzerdefinierten Beitragstypen, benutzerdefinierten Feldern und benutzerdefinierten Elementen aus. In einer bestimmten Vorlagendatei habe ich eine sekundäre Schleife, die eine Liste von Elementen aus einem anderen Blog abruft. Nach allem, was ich gesammelt habe, 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 http://www.mysite.com/blog23name/postname anstelle von http://www.mysite.com/blog23name/lang/posttype/postname aus - der benutzerdefinierte Permalink, der auf angezeigt wird die Seite 'Beitrag bearbeiten'.
Irgendwelche Ideen?
quelle
switch_to_blog()
es werden keine Permalinks für benutzerdefinierte Beitragstypen mit übergangenget_permalink()
- was dies zu einem großartigen Ort macht, um danach zu fragen. Vielen Dank für die Ablehnung. Es ist jedoch viel hilfreicher, als eine Antwort auf eine 2 Monate alte Frage zu finden.Antworten:
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 ist in WPML -> Übersetzungsverwaltung -> Einrichtung mehrsprachiger Inhalte unten. Ich gehe davon aus, dass es funktioniert, indem WP dazu gebracht wird, die Umschreib- / Übersetzungsregeln dieser Site zu verwenden, wenn es nicht die richtigen Informationen von enthält
switch_to_blog()
.quelle