web-dev-qa-db-ja.com

マルチサイト設定の異なるサイトでのWP_Query

1つのマルチサイトサイト( "Staffsite" - id:2)から検索結果を取得し、それらをマルチサイト設定の一部である別のサイト( "Flagship" - id:1)に検索結果と共に表示しようとしています。私は現在Flagshipのsearch.phpに次のコードを持っています:

$args = array(
    'post_type' => 'staff',
    's'         => get_search_query(),
);

switch_to_blog( 2 ); // switch to Staffsite

$staffsite_query = new WP_Query( $args );

var_dump( $staffsite_query->post_count ); // 0

// Do something with post data

restore_current_blog(); // return to Flagship

Staffsiteのテンプレートで(get_search_query()を実際の値に置き換えて)使用すると、クエリは予想どおりに機能し、関連するすべての投稿が返されますが、Flagshipのテンプレートからswitch_to_blog()と組み合わせて使用​​すると機能しません。

どのような理由でこれが機能しないのですか?

2
Sillzen

代わりのオプションは Rest API を使うことです:

例(投稿):

投稿でJane Doeを検索:

https://example.com/staffsite/wp-json/wp/v2/posts/?search=jane+doe

例(カスタム投稿タイプ):

publicand searchable)カスタム投稿タイプ(staffなど)のshow_in_resttrueに設定されている場合、スタッフ投稿でJane Doe)を検索できます。

https://example.com/staffsite/wp-json/wp/v2/staff/?search=jane+doe

ps:ネットワーク内の複数のサイトからのデータを使用して独自のルートを作成したい場合は、多少関係があります。 WP REST AP​​I - マルチサイト - すべてのサイトから投稿を取得する

2
birgire