WordPress:マルチサイト化したページも含めサイト内検索する方法



WordPressにはサイト内検索がありますが、
マルチサイト化してしまうとマルチサイト毎のサイト内検索となり、
マルチサイト化した全てのページは検索対象にならなかったりします。
そのマルチサイト化した対象のページも含めて検索する方法です。

1.テーマファイルsearch.phpより、ページ先頭に以下を記述

<?php
$searchfor = get_search_query();
get_header();
?>

2.テーマファイルsearch.phpの検索結果表示箇所に以下を記述

<?php
	$query_string=esc_attr($query_string);
	$blogs = get_blog_list(0,'all');
	foreach ( $blogs as $blog ):
	switch_to_blog($blog['blog_id']);

	//過去記事「文字列内から指定の開始文字から終了文字までの間の文字を取得するPHP」
	//文字列間の文字取得関数呼び出し
	$re_mozi = html_cut_syutoku($_SERVER["REQUEST_URI"],"/page/","?s=",0);

	$search = new WP_Query($query_string."&posts_per_page=10&paged=".$re_mozi);

	if ($search->found_posts>0) {
		foreach ( $search->posts as $post ) {
			setup_postdata($post);
			$author_data = get_userdata(get_the_author_meta('ID'));
?>
投稿日付:<?php echo get_post_time('Y.m.d'); ?><br />
タイトルと記事へのリンク:<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a><br />
<?php
		}

	}
	endforeach;
?>

3.文字列間の文字取得関数呼び出し

過去記事より「文字列内から指定の開始文字から終了文字までの間の文字を取得するPHP」を使用してます。
テーマファイルsearch.phpの任意の箇所に以下を記述します。

<?php
// $html_buf:対象の文字列
// $start_buf:開始文字列
// $end_buf:終了文字列
// $int_positon_cnt:対象文字列内の取得開始位置
function html_cut_syutoku($html_buf, $start_buf, $end_buf, $int_positon_cnt){

	if(strstr($html_buf, $start_buf)){
		$srt_position = strpos($html_buf, $start_buf, $int_positon_cnt);
		$srt_position = $srt_position + strlen($start_buf);
		$end_position = strpos($html_buf, $end_buf, $srt_position);
		
		$result_buf = substr($html_buf, $srt_position, $end_position-$srt_position);
	}else{
		$result_buf = "";
	}
	
	return $result_buf;
}
?>

上記内容で恐らく取得できると思いますが、
出来なかったらすみません。