Tengo algo sobre esto en los foros de soporte de WPML, pero pensé que podría preguntar aquí también. Aquí está la información importante: estoy ejecutando una configuración WP Multisite con tipos de publicaciones personalizadas, campos personalizados, todo lo que parece personalizado. En un archivo de plantilla en particular, tengo un bucle secundario que extrae una lista de elementos de un blog diferente. De lo que reuní, cualquier cosa que use la API de WP debe filtrarse solo al idioma actual, pero ninguna de las WP_Query()
funciones que tengo lo está haciendo.
Código relevante:
<?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();
?>
El problema aquí es doble: primero, devuelve resultados de cada idioma en lugar del idioma actual: la misma publicación, tres veces (EN, FR, DE). Segundo, el resultado de get_permalink()
es completamente incorrecto: está escupiendo http://www.mysite.com/blog23name/postname en lugar de http://www.mysite.com/blog23name/lang/posttype/postname , el enlace permanente personalizado que se muestra en la página 'editar publicación'.
¿Algunas ideas?
fuente
switch_to_blog()
no pasa por alto los enlaces permanentes para los tipos de publicaciones personalizadasget_permalink()
, lo que lo convierte en un excelente lugar para preguntar al respecto. Sin embargo, gracias por el voto negativo, es mucho más útil que realmente dar una respuesta a una pregunta de 2 meses.Respuestas:
Mi solución fue registrar los tipos de publicaciones personalizadas en el sitio desde donde lo llamo, luego, en la configuración de WPML, configúrelos para traducir. Esto está en WPML -> Gestión de traducciones -> Configuración de contenido multilingüe, abajo en la parte inferior. Supongo que funciona engañando a WP para que use las reglas de reescritura / traducción de ese sitio cuando no tiene la información adecuada
switch_to_blog()
.fuente