質問: $result->post_count; ``` **■ ここまで出来ていること** ・マッチした記事数は正常に取得できている (キーワードアリ/ナシ問わず問題なし) ・キーワードがない場合の検索結果の一覧表示 **■ ここまでで出来ないこと** キーワードがある場合の検索結果 (カテゴリー、タグの値の有無に関係なく、 上記のarray_merge部分について、以下のようなエラーが表示されます。 ``` Warning: array_merge(): Argument #1 is not an array in /home/[サイトURL]/[ファイルURL] on line 11 ``` エラーの内容を確認し、$query2を$query2[] などとしてみたり、 色々と試してはみたのですが、いずれもダメでした。 すみません、どこで躓いているのか、どういう組み立て方が正しいのか、 などご教示いただける方がいましたら、どうぞお力を貸してください。
回答: ``` Warning: array_merge(): Argument #1 is not an array in /home/[サイトURL]/[ファイルURL] on line 11 ``` $query1->postsや$query2->postsの型は配列じゃないです。 配列じゃ無いものをarray_merge()などできません。 $query1や$query2は、WP_Queryクラスのインスタンスです。 やりたいことの確認ですが、カテゴリー、タグ、検索ワードで絞り込んだ投稿データの出力ですよね? そうであれば、そもそもWP_Queryを2つに分ける必要はないです。 ``` // 検索条件 $query1 = new WP_Query( array( 'post_type' => 'post', 's' => $s, 'tax_query' => array( 'relation' => $relation_key, array( 'taxonomy' => 'category', 'field' => 'id', 'terms' => $cat_ids, 'operator' => 'IN' ), array( 'taxonomy' => 'post_tag', 'field' => 'id', 'terms' => $tag_ids, 'operator' => 'IN' ) ) )); ``` これでいけます。 $sの制御ですが、$_GET['s']が空だったらそのまま空文字いれれば検索ワード無しということで動いたはずです。 もしうごかなければ、's' => $s を変数化して$sがある時だけ配列に組み込むように制御すればOKです。 このようにすれば、あとは普通にループの展開で検索結果がとれると思いますよ。