问题描述

我在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。