问题描述
我在 WPML 支持论坛上有一些与此有关的内容,但我想我也可以在这里询问。这是重要的信息:我正在运行一个 WP 多站点设置,具有自定义的帖子类型,自定义字段,自定义一切似乎。在特定的模板文件中,我有一个辅助循环,它从另一个博客中拉出一个项目列表。从我收集到的东西,使用 WP API 的任何东西都应该被过滤掉,只能使用当前的语言,但是没有一个 WP_Query()
函数是这样做的。
相关代码:
<?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();
?>
这里的问题有两个方面:首先,它返回每种语言的结果,而不是当前的语言 – 同一篇文章,三次 (EN,FR,DE) 。第二,get_permalink()
的结果是完全错误的 – 它正在吐出 http://www.mysite.com/blog23name/postname 而不是 http://www.mysite.com/blog23name/lang/posttype/postname – ‘edit post’ 页面上显示的自定义固定链接。
有任何想法吗?
最佳解决方案
我的解决方案是在我从其中调用的站点上注册自定义帖子类型,然后在 WPML 的设置中设置它们进行翻译。这是在 WPML – > 翻译管理 – > 多语言内容设置,在底部。我认为它的作用是欺骗 WP 使用该网站的重写/转换规则,当它没有从 switch_to_blog()
的正确的信息。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。