Eu tenho algo sobre isso nos fóruns de suporte do WPML, mas achei que poderia perguntar aqui também. Aqui estão as informações importantes: Estou executando uma instalação WP Multisite com tipos de postagem personalizados, campos personalizados, tudo o que parece personalizado. Em um arquivo de modelo específico, eu tenho um loop secundário que extrai uma lista de itens de um blog diferente. Pelo que pude reunir, qualquer coisa usando a API do WP deve ser filtrada apenas para o idioma atual, mas nenhuma das WP_Query()
funções que eu tenho está fazendo isso.
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();
?>
O problema aqui é duplo: primeiro, ele retorna resultados de todos os idiomas, em vez do idioma atual - o mesmo post, três vezes (EN, FR, DE). Segundo, o resultado de get_permalink()
está completamente errado - está cuspindo http://www.mysite.com/blog23name/postname em vez de http://www.mysite.com/blog23name/lang/posttype/postname - o link permanente personalizado mostrado em a página "editar postagem".
Alguma ideia?
fonte
switch_to_blog()
não passa permalinks para tipos de post personalizados comget_permalink()
- tornando este um ótimo lugar para perguntar sobre isso. Obrigado pelo voto negativo, no entanto, é muito mais útil do que realmente encontrar uma resposta para uma pergunta de dois meses.Respostas:
Minha solução foi registrar os tipos de postagem personalizados no site de onde estou ligando e, nas configurações do WPML, defina-os para tradução. Isso está em WPML -> Translation Management -> Multilingual Content Setup, na parte inferior. Presumo que ele funcione, enganando o WP a usar as regras de reescrita / conversão desse site quando ele não tiver as informações apropriadas
switch_to_blog()
.fonte