J'ai quelque chose à ce sujet sur les forums de support WPML, mais je me suis dit que je pouvais aussi demander ici. Voici les informations importantes: j'exécute une configuration WP Multisite avec des types de publication personnalisés, des champs personnalisés, personnalisé tout ce qu'il semble. Dans un fichier de modèle particulier, j'ai une boucle secondaire qui extrait une liste d'éléments d'un blog différent. D'après ce que j'ai rassemblé, tout ce qui utilise l'API WP doit être filtré uniquement dans la langue actuelle, mais aucune des WP_Query()
fonctions que je possède 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 ici est double: premièrement, il renvoie les résultats de chaque langue 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 permalien personnalisé affiché sur la page "modifier le message".
Des idées?
la source
switch_to_blog()
ne passe pas sur les permaliens pour les types de publication personnalisésget_permalink()
- ce qui en fait un excellent endroit pour poser des questions à ce sujet. Merci pour le downvote, cependant, c'est beaucoup plus utile que de trouver une réponse à une question vieille de 2 mois.Réponses:
Ma solution a été d'enregistrer les types de publication personnalisés sur le site d'où je l'appelle, puis dans les paramètres de WPML de les définir pour traduire. C'est dans WPML -> Gestion de la traduction -> Configuration du contenu multilingue, en bas en bas. Je suppose que cela fonctionne en incitant WP à utiliser les règles de réécriture / traduction de ce site lorsqu'il ne dispose pas des informations appropriées
switch_to_blog()
.la source