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()
と組み合わせて使用すると機能しません。
どのような理由でこれが機能しないのですか?
代わりのオプションは Rest API を使うことです:
例(投稿):
投稿でJane Doeを検索:
https://example.com/staffsite/wp-json/wp/v2/posts/?search=jane+doe
例(カスタム投稿タイプ):
publicand searchable)カスタム投稿タイプ(staff
など)のshow_in_rest
がtrue
に設定されている場合、スタッフ投稿でJane Doe)を検索できます。
https://example.com/staffsite/wp-json/wp/v2/staff/?search=jane+doe
ps:ネットワーク内の複数のサイトからのデータを使用して独自のルートを作成したい場合は、多少関係があります。 WP REST API - マルチサイト - すべてのサイトから投稿を取得する