web-dev-qa-db-ja.com

WP_Queryを使用した3つの言語すべてに対応するWPML

私はWPMLサポートフォーラムでこれに関する何かを持っています、しかし私は私がここでも同様に尋ねることができると思いました。重要な情報は次のとおりです。私はWP Multisite設定をカスタム投稿タイプ、カスタムフィールド、すべてカスタム設定で実行しています。特定のテンプレートファイルで、私は別のブログからアイテムのリストを引っ張るという二次的なループを持っています。私が集めたものから、WP AP​​Iを使用するものはすべて現在の言語だけに絞り込まれるべきですが、私が持っている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();
?>

ここでの問題は2つあります。まず、現在の言語ではなくすべての言語から結果が返されることです - 同じ投稿、3回(EN、FR、DE)。第二に、get_permalink()からの結果は完全に間違っている - それは吐き出す http://www.mysite.com/blog23name/postname ではなく http://www.mysite.com/blog23name/lang/posttype/) postname 「投稿の編集」ページに表示されるカスタムパーマリンク。

何か案は?

8
SickHippie

私の解決策は、私がそれを呼び出しているサイトにカスタム投稿タイプを登録し、そしてWPMLの設定でそれらを翻訳するように設定することでした。これはWPML - > Translation Management - > Multilingual Content Setupの下部にあります。私はそれがswitch_to_blog()からの適切な情報を持っていないときそのサイトの書き換え/翻訳規則を使うようにWPをトリックすることによってうまくいくと思います。

2
SickHippie