問題描述

我在 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="http://'%20.%20get_permalink()%20.%20'">' . 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。