web-dev-qa-db-ja.com

WP マルチサイト:サイトXのコンテンツをサイトYにロードする

私は私のプロのウェブサイト(http://mydomain.com)でWPマルチサイトネットワークを運営しています。私はjQuery Mobileで遊んでモバイルユーザーに異なるWebサイトとWebエクスペリエンスを提供したいので、 http://m.mydomain.com にこのネットワーク内に別のサイトを作成しました。

メイン(デスクトップ)WPサイトで、私は自分のプロのプロジェクトを分類するために "プロジェクト"コンテンツタイプを作成しました。作成するモバイルサイトでは、すべてのプロジェクトをモバイルWPサイトに再作成するのではなく、これらのプロジェクトを(デスクトップWPデータベースから)ロードできるようにしたいと思います。

私はすでに似たようなことに取り組んでいます:私はメインのWPサイトのサブドメインを通して 'require wp-load.php'テクニックを使ってWP contentにアクセスしなければなりませんでしたが、私は両方のサイトが同じネットワーク上にあるため、WPにこれをクリーンな方法で行うための組み込み関数があるかどうか疑問に思います。

6
user20569

あなたのpost_type "projects"でWP_Queryを実行する前に、関数 switch_to_blog を使うことができます。

現在のブログを別のブログに切り替えます。 switch_to_blog()は、他のブログから投稿やその他の情報を取得する必要がある場合に便利です。

このように聞こえるのはあなたが望むものです。それでは、あなたがmain_siteにあなたのコンテンツを持っているとしましょう。携帯サイトでこれを実行します。

// Get current blog_id
global $blog_id;

// Run this code if on mobilesite
// Change from blog_id 2 if another id
if( $blog_id == 2 ) {

    // Switch to the main_site
    switch_to_blog(1);

        // Get from projects and all of the posts
        $args = array(
            'post_type'  => 'projects',
            'posts_per_page' => -1
        );

        // The Query
        $the_query = new WP_Query( $args );

        // The Loop
        while ( $the_query->have_posts() ) :
            $the_query->the_post();
            echo '<li>' . get_the_title() . '</li>';
        endwhile;

        // Restore original Query & Post Data
        wp_reset_query();

    // Switch back to mobilesite
    restore_current_blog();
}
1