起きている問題
Wordpressのカスタム投稿にカスタムタクソノミーで絞り込みを追加しようと考えています。
ただ、タクソノミー名を見せたくないため、URL上では別のパラメータを指定しています。
2つある絞り込みのどちらか片方だけであれば正常動作するのですが、
両方設定すると後者の方が機能していません。
一度配列にまとめてから代入という手も考えたのですが、代入の仕方が間違っているようで500エラーになってしまいます。
どなたか改善案などあればご教示いただければと思います。
現行のコード・問題点
PHP
1$args = array( 2 'post_type' => 'toukou', 3 'post_status' => 'publish', 4 'posts_per_page' => 12 5); 6 7if (isset($_GET['category'])) { 8 $args += array( 9 'tax_query' => array( 10 array( 11 'taxonomy' => 'toukou_category', 12 'field' => 'slug', 13 'terms' => $_GET['category'] 14 ) 15 ) 16 ); 17} 18if (isset($_GET['item'])) { 19 $args += array( 20 'tax_query' => array( 21 array( 22 'taxonomy' => 'toukou_item', 23 'field' => 'slug', 24 'terms' => $_GET['item'] 25 //上が動作するとこちらが機能していない 26 ) 27 ) 28 ); 29} 30$posts = get_posts( $args );
試した改善案
PHP
1$args = array( 2 'post_type' => 'toukou', 3 'post_status' => 'publish', 4 'posts_per_page' => 12 5); 6$query_array = array(); 7 8if (isset($_GET['category'])) { 9 array_push($query_array, 10 array( 11 'taxonomy' => 'toukou_category', 12 'field' => 'slug', 13 'terms' => $_GET['category'] 14 ) 15 ); 16} 17if (isset($_GET['item'])) { 18 array_push($query_array, 19 array( 20 'taxonomy' => 'toukou_item', 21 'field' => 'slug', 22 'terms' => $_GET['item'] 23 ) 24 ); 25} 26if (!empty($query_array)) { 27 $args += array( 28 'tax_query' => $query_array; 29 //ここが間違っているんだろうなと言うのは分かる 30 ); 31} 32$posts = get_posts( $args );
また、array_push()
をarray_merge_recursive()
に変えてみたり、
代入範囲を'tax_query' => array()
全体にしてみたりもしましたが
以下の通りうまくいきませんでした。
代入方法\範囲 | tax_queryから | 中身のみ |
---|---|---|
push | 500エラー | $query_array の中身はある |
mergere_cursive | 500エラー | $query_array がそもそも空 |
※26〜31行目をコメントアウトした状態で確認しています
補足情報(バージョンなど)
PHP 7.4
Wordpress 4.9.22
どうかよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー