teratailさんのように、「マイタグで絞り込み」などの条件を設置したいのですが、その際にWP_Queryが冗長になってしまうのを避けたいです。
###実現したいこと
Cookieに保存された絞り込み条件「$_COOKIE["refine"] )
」から、表示記事の条件「WP_Query( $args )
」を生成したいです。
しかし絞り込み条件に「マイタグ」「執筆者」などがあると、PHPが冗長になってしまいそうで困っています。
具体的には、該当のソースコードにあるように
// ➀マイタグで絞り込む場合
// ➁執筆者で絞り込む場合
// ➂マイタグと執筆者で絞り込む場合
という3つのパターンそれぞれのWP_Query( $args )
を作らなければならないのか?と思っておりまして、この点の冗長さを避けたいです。
###該当のソースコード
php
1<!-- 新着記事一覧 --> 2<section class="RelatedPost"> 3 4 <?php 5 6 /* 7 * 絞り込みの条件を$refineへ 8 */ 9 $refine = $_COOKIE["refine"] ); 10 11 /* 12 * 表示記事の条件を$argsへ 13 */ 14 15 // ➀マイタグで絞り込む場合 16 if(preg_match('/マイタグ/',$refine)){ 17 $args = array( 18 // 新着記事の条件 19 'orderby' => 'date', 20 // マイタグの条件 21 'tax_query' => array( 22 array( 23 'taxonomy' => 'tag', 24 'field' => 'slug', // IDのときはterm_id 25 'terms' => explode(",", $mytag), 26 ), 27 ), 28 ); 29 } 30 31 // ➁執筆者で絞り込む場合 32 if(preg_match('/執筆者/',$refine)){ 33 $args = array( 34 // 新着記事の条件 35 'orderby' => 'date', 36 // 執筆者の条件 37 'author' => $authoe, 38 ); 39 } 40 41 // ➂マイタグと執筆者で絞り込む場合 42 if(preg_match('/マイタグ,執筆者/',$refine)){ 43 $args = array( 44 // 新着記事の条件 45 'orderby' => 'date', 46 // マイタグの条件 47 'tax_query' => array( 48 array( 49 'taxonomy' => 'tag', 50 'field' => 'slug', // IDのときはterm_id 51 'terms' => explode(",", $mytag), 52 ), 53 ), 54 // 執筆者の条件 55 'author' => $authoe, 56 ); 57 } 58 59 $the_query = new WP_Query( $args ); 60 ?> 61 62 <!-- ループあれこれ書く --> 63 64</section> 65 66<!--コメント数記事一覧 --> 67<section> 68ここには上の 69// 新着記事の条件 70'orderby' => 'date', 71を 72// コメント数の条件 73'orderby' => 'comment_count', 74にしただけで他が同じソースコードを書く? 75</section>
さらにソースコードの最後にあるように、<!-- 新着記事一覧 -->
だけでなく<!--コメント数記事一覧 -->
なども追加する予定なのですが、そうなるとその都度➀➁➂の条件を書かないといけないのか?と思っておりまして、どうしたものかと途方に暮れています。
この辺りをなんとかスッキリとさせるためにはどのようなコードがベストでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/06 18:48 編集
2018/12/06 18:49 編集
2018/12/07 00:07