アドセンス
<?php if ( have_posts () ) : $loop_count = '' ; //$ransuu = rand(1, 5); $koukoku_no = array(4,8,12) ; while ( have_posts() ) : the_post(); $loop_count++; ?> <!----/宣言-----> <?php include("d_roop_box.php"); ?> <!----閉じループタグ-----> <?php if ( $loop_count == $koukoku_no[0] || $loop_count == $koukoku_no[1] || $loop_count == $koukoku_no[2] ) :?> <?php include("ad_kiji_naka.php"); ?> <?php endif; ?> <?php endwhile; endif; ?>
フォーチ
<!--アドバンスカスタム ループフィールド--------> <div class="flickThumb"> <ul> <?php if($post->sekou_gallery2): //URLがあれば $fields = get_field('sekou_gallery2'); foreach ($fields as $field) : ?> <?php $title= get_the_title(); $attachment_id = $field['id']; ?> <li><a href="#" onClick="return false;"> <?php $car_photo = wp_get_attachment_image($attachment_id,'BLOG249_176',0,array('alt'=>$title.'|'.$head_rogo_under,'title'=>$title.'|'.$head_rogo_under)); echo $car_photo; ?> </a></li> <?php endforeach; endif; ?> </ul> </div><!--/.flickThumb--> <!--フォーチ回数指定--------> <?php $i = 0; $kiji = 1;//この回数でフォーチ終わる。 $fields = get_field('sekou_gallery2'); foreach ($fields as $field) : if($i >= $kiji)://siが3よりおおきくなったら break;//ループおわり else://それまではこれで出力 ?> 表示領域 <?php $i++;//繰り返すごとに$iに数値が1つづ増える endif; endforeach; ?>
記事ループ基本
<!--基本--> <?php if ( have_posts () ) : while ( have_posts() ) : the_post(); ?> 内容 <?php endwhile; else:?> <div style="font-size:12px; color:#CCC; padding-top:10px;">※記事はまだありません。</div> <?php endif; ?> <div style="padding-top:30px; padding-left:0px;"> <?php if(function_exists('wp_pagenavi')) : wp_pagenavi(); endif; //ページナビ ?> </div>
クエリポスト
<!--ページ送りある場合は クエリポストで --> <!--★★★クエリポスト種類--> <!--$query_stringは例えば、カテゴリアーカイブページの場合、現状のカテゴリアーカイブページの条件を残す設定--> <?php query_posts($query_string . "&orderby=menu_order&order=ASC"); //順序小さい順?> <?php query_posts($query_string . "&posts_per_page=20&orderby=menu_order&order=ASC"); //順序小さい順ページ数指定?> <?php query_posts("cat=123"); ?> <!--配列では$query_stringは使えない--> <!-- 's' => $s とあったが本当か? https://www.it-swarm-ja.tech/ja/query-posts/queryposts-querystring/961913587/--> <!-- 順序→ 投稿日 これで 出来たっけ? 'orderby' => array('menu_order'=> 'DESC','date'=> 'DESC'), --> <?php $args = array( 'posts_per_page' => 10, 'paged' => $paged, 'orderby' => 'menu_order', 'order' => 'ASC', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'event', 'field' => 'slug', 'terms' => array( 'トップ用', '予備' ), //'operator'=>'NOT IN' ), ), 'post_type' => 'venere_event', //カスタム投稿名 ); query_posts( $args ); ?> ループへ続く <!--ページナビプラグインの後--> <!---クエリポスト用リセットクエリ----> <?php wp_reset_query(); ?>
ゲットポスト
!--基本はゲットポストで--> <!-- なんだかページ送りが上手く簡単にいかなかったので ページ送りある場合は クエリポストで↑ --> <?php $args = array( 'posts_per_page' => 3, 'cat' => 337, ); $myposts = get_posts( $args ); if(! $myposts){ echo '<div style="margin-left:20px;">記事はまだありません。</div>';} foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 内容 <?php endforeach; wp_reset_postdata();?>
クエリ
<!------------------------------------------------------------------------------------> <!------------メタキーでソート--- メタクエリ空なし&5年以内---ゲットポスト -----ページ送りむずかしい サブループで仕様可能------> <?php $d_today = date("Ymd");//今日を取得して $d_5years = $d_today - 50000;//5年と00ヶ月00日を引くと5年前の日付を取得できる。 $args = array( 'posts_per_page' => 3, 'post_type' => 'shop', //カスタム投稿名 'meta_key'=>'open_day', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'meta_query' => array( //メタクエリ //カスタムフィールドによる絞り込み array( 'key' => 'open_day',//カスタムフィールド オープン日 'value' => '',//空のやつは 'compare'=>'NOT IN'//含めん ), array( 'key' => 'open_day', //カスタムフィールド名 オープン日 'value' > $d_5years, //5年以内のやつを 含める (数値大きいと5年以内) ), ), ); ?> <?php $myposts = get_posts( $args ); foreach ( $myposts as $post ) : setup_postdata( $post ); ?> <?php include("d_roop_box.php"); ?> <?php endforeach; wp_reset_postdata();?> <!---------------------------------------taxクエリ---------------------------------------------> くわしく http://elearn.jp/wpman/column/c20110908_01.html 例 'news'または'topics'カテゴリーに属し、'service'および'price-down'という投稿タグが付いた投稿記事を絞り込む場合 <?php $args = array( 'tax_query' => array( array( 'taxonomy'=>'category', 'terms'=>array( 'news', 'topics' ), 'field'=>'slug', 'include_children'=>true, 'operator'=>'IN', //termsで指定した値が配列の場合いずれかの要素に一致 ), array( 'taxonomy'=>'post_tag', 'terms'=>array( 'service', 'price-down' ), 'field'=>'slug', 'operator'=>'AND', //termsで指定した値が配列の場合すべての要素に一致 //'operator'=>'NOT IN', //termsで指定した値(配列の場合はすべての要素)に一致しない ), 'relation' => 'AND', //すべての条件に一致 //'relation' => 'OR', //いずれかの条件に一致 ) ) ?> <!---------------------------------------metaクエリ--------------------------------------> くわしく http://www.memo.d-marking.com/blog/2014/10/25/%e3%82%af%e3%82%a8%e3%83%aa%e3%83%bc%e3%83%9d%e3%82%b9%e3%83%88%e3%81%be%e3%81%a8%e3%82%81url%e7%ad%89/ カスタムフィールド「hoge」に「fuga」という文字列を含み 「foo」の値が「bar」を持たない記事を表示 <?php $args = array( "meta_query" => array( array( "key" => "hoge", "value" => "fuga", "compare" => "LIKE" ), array( "key" => "foo", "value" => "bar", "compare" => "NOT IN" ) ) ) // compareの 可能な値は、 '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' (WP >= 3.5でのみ), 'NOT EXISTS' (WP >= 3.5でのみ). 値 'REGEXP'、'NOT REGEXP'、 'RLIKE' は WordPress 3.7で追加されました。 デフォルト値は '=' 。 ?> <!--------------------------------------------dateクエリ-----------------------------------------> くわしく http://www.memo.d-marking.com/?p=1409 くわしく http://elearn.jp/wpman/column/c20131030_01.html 使用目的はソールドアウトに変更更新した記事を 30日間はループに表示させるが30日以降は表示させない という設定で仕様予定 //投稿日が一年以上前で、一ヶ月以内に更新された記事を取得 <?php $args = array( 'date_query' => array( array( 'column' => 'post_date_gmt', 'before' => '1 year ago', ), array( 'column' => 'post_modified_gmt', 'after' => '1 month ago', ), ), 'posts_per_page' => -1, ); $query = new WP_Query( $args ); //or でループさせる query_posts( $args ); ?>
stingイベントTOP カスタムフィールドの日付 と今日で比較して、今日より未来のもののみ表示 <?php $meta_value = date("Ymd"); // echo "<pre>"; // print_r($meta_value); // echo "</pre>"; $args = array( 'post_type' => 'event_info', //カスタム投稿名 'posts_per_page' => 6, 'meta_query' => array( //メタクエリ //カスタムフィールドによる絞り込み array( 'key' => 'event_day',//カスタムフィールド オープン日 'value' => $meta_value, 'compare'=>'>=',//含めん 'type' => 'DATE' //日付の比較 ) ) ); $myposts = get_posts( $args ); if(! $myposts){ echo '<div style="margin-left:20px;">記事はまだありません。</div>';} foreach ( $myposts as $post ) : setup_postdata( $post ); ?> <?php include(get_stylesheet_directory() . "/event_roop.php"); ?> <?php endforeach; wp_reset_postdata();?>
new WP_Query
くわしく https://wemo.tech/160 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query 複数の並び替えを実現したい場合、new WP_Queryでも できるようだ、ふくざつな項目がたくさんあるぞ <?php //$argsのプロパティを変えていく $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'no_found_rows' => true, //ページャーを使う時はfalseに。 ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); /* ループ内の記述 */ endwhile; endif; wp_reset_postdata(); ?>
イズメインクエリ
<?php //fanctionで アーカイブに投稿を制御させる方法 function SortArchive( $query ) { //管理画面スルー if ( is_admin() || ! $query->is_main_query() ) return; //こっから if ( $query->is_category() || $query->is_archive() || $query->is_tax() || $query->is_search() ) { $query->set( 'meta_key', 'item_sta' ); $query->set( 'orderby', array( 'meta_value' => 'DESC', 'date' => 'DESC' ) );//並び替えの2つの条件 メタキーで並べ 同じメタキーは古い投稿順 return; //これいる?? } } add_action( 'pre_get_posts', 'SortArchive' ); ?>
WP_Queryやget_postsのパラメータまとめ
<?php $args = array( //「author」(著者)に関連付けて検索 'author' => '1,2,3', // 著者のユーザIDを指定 'author_name' => 'rishuntrading', // user_nicenameを指定(ログイン名(user_login)では無いです) 'author__in' => array( 2 , 6 ), // 著者のユーザIDを配列で指定(該当のユーザーIDが含む記事で検索) 'author__not_in' => array( 2 , 6 ), // 著者のユーザIDを配列で指定(該当のユーザーIDを含まない記事で検索) //「category」(カテゴリ)に関連付けて検索 'cat' => 3, // カテゴリIDを指定 'category_name' => 'topics, news', // カテゴリのスラッグで指定(複数は","(カンマ)区切り) 'category__and' => array( 2 , 5 ), // カテゴリIDを指定(配列)(該当のカテゴリIDが含む記事で検索) 'category__in' => array( 2 , 5 ), // カテゴリIDを指定(配列)(該当のカテゴリIDが含む記事で検索) 'category__not_in' => array( 2 , 6 ), // カテゴリIDを指定(配列)(該当のカテゴリIDを含まない記事で検索) //「tag」(タグ)に関連付けて検索 'tag' => 'web_design', // タグのスラッグを指定 'tag_id' => 5, // タグIDを指定 'tag__and' => array( 2 , 6 ), // タグIDを指定(配列)(該当のタグIDが含む記事で検索) 'tag__in' => array( 2 , 6 ), // タグIDを指定(配列)(該当のタグIDが含む記事で検索) 'tag__not_in' => array( 2 , 6 ), // タグIDを指定(配列)(該当のタグIDが含まない記事で検索) 'tag_slug__and' => array( 'web_design', 'import' ), // タグスラッグを指定(配列)(タグスラッグを含む記事を検索) 'tag_slug__in' => array( 'web_design', 'import' ), // タグスラッグを指定(配列)(タグスラッグを含む記事を検索) //「taxonomy」(タクソノミー)に関連付けて検索(複数のタクソノミー条件は'AND'や'OR'を付与できる) 'tax_query' => array( // タクソノミー条件はtax_queryを指定 'relation' => 'AND', // タクソノミーの検索条件に 'AND' か 'OR'指定 array( 'taxonomy' => 'prefecture', // タクソノミーを指定 'field' => 'slug', // term_id(デフォルト), name, slug のいずれかの検索対象のタームのフィールド 'terms' => array( 'saitama', 'tokyo' ), // fieldに指定した検索対象フィールドの検索値(配列) 'include_children' => true, // 子孫タクソノミーを含めるかどうか 'operator' => 'IN' // 演算子'IN','NOT IN','AND','EXISTS'(4.1.0以降),'NOT EXISTS'(4.1.0以降)が利用可能 ), array( 'taxonomy' => 'contry', 'field' => 'id', 'terms' => array( 122, 132, 141 ), 'include_children' => false, 'operator' => 'NOT IN' ) ), //「投稿&固定ページ」に関連付けて検索 'p' => 10, // 投稿IDを指定 'name' => 'wordpress_tech', // 投稿スラッグを指定 'page_id' => 10, // 固定ページのIDを指定 'pagename' => 'aboutus', // ページスラッグを指定 'pagename' => 'business/website_design', // 子ページを表示する場合、スラッシュ区切りで親と子のスラッグを指定 'post_parent' => 10, // 指定したページIDの子ページを検索 'post_parent__in' => array( 10, 11, 12 ), // 親ページIDを含む投稿を検索(配列) 'post_parent__not_in' => array( 10, 11, 12 ), // 親ページIDを含まない投稿を検索(配列) 'post__in' => array( 10, 11, 12 ), // 該当の投稿IDの投稿で検索(配列) 'post__not_in' => array( 10, 11, 12 ), // 該当の投稿IDが含まない投稿で検索(配列) //「パスワード」に関連付けて検索 'has_password' => true, // パスワード付きの投稿を検索( true or false ) 'post_password' => 'birthday1111', // 該当のパスワードが付いた投稿を検索 //「post_type」に関連付けて検索 'post_type' => array( 'post', // 投稿 'page', // 固定ページ 'revision', // リビジョン 'attachment', // 添付ファイル 'custom-post-type' // カスタム投稿タイプ ), 'post_type' => 'any', // 全てのpost_typeを表示(revisionと'exclude_from_search'がtrueにセットされたものは除く) //「post_status」(投稿の状態)に関連付けて検索 'post_status' => array( // 投稿の状態を指定(デフォルト'publish') 'publish', // 公開状態 'pending', // レビュー待ち状態 'draft', // 下書き状態 'auto-draft' // コンテンツのない、新しく作成された投稿/ページを表示 'future', // 予約公開が設定された状態 'private', // ログインしたユーザーしか見れない状態 'inherit', // リビジョン 'trash', // ゴミ箱に入っている状態 ), 'post_status' => 'any', // すべての状態(post_statusで'exclude_from_search'がtrueにセットされたものは除く) //「page送り(pagination)」に関連する指定 'posts_per_page' => 10, // 1ページに表示できる最大投稿数(-1は全て表示) 'posts_per_archive_page' => 10, // 1ページに表示できる最大投稿数(アーカイブページのみ) 'nopaging' => false, // ページ送りの有効/無効、(デフォルトはfalseでページ送りを使用) 'paged' => 3, // ページ番号3の記事一覧を表示 'paged' => get_query_var('paged'), // 現在のページから投稿を表示 'offset' => 4, // 設定した数だけ、ずらして表示(例では5番目の投稿から表示) 'ignore_sticky_posts' => false, // 先頭の固定表示投稿を無視するかどうか(デフォルトは0で、先頭の固定表示投稿は無視しない) // ソートの指定 'order' => 'DESC', // 'ASC' 昇順 (1, 2, 3; a, b, c) // 'DESC' 降順 (3, 2, 1; c, b, a) 'orderby' => 'date', // デフォルト値'date' 複数オプションの指定が可能 // 例:'orderby' => 'product_name title' // その他のオプション ↓ //'none' 並び替えなし //'ID' 投稿IDでソート //'author' 著者でソート //'title' タイトルでソート //'name' Order by post name(post slug) //'modified' 更新日でソート //'parent' 親ページIDでソート //'rand' ランダム順 //'comment_count' コメント数でソート //'menu_order' ページの表示順でソート //'meta_value' アルファベット順でソート(数値ではうまくいかない) //'meta_value_num' 数値でソート //'post__in' post__inで配列で指定された投稿IDの並び順を維持して表示 //「日付や時間の期間」に関連付けて検索 'year' => 2021, // 年を指定(2021など) 'monthnum' => 4, // 月を指定(1~12) 'w' => 25, // 年内の週を指定(0~53) 'day' => 17, // 月内の日を指定(1~31) 'hour' => 13, // 時間を指定(0~23) 'minute' => 19, // 分を指定(0~60) 'second' => 30, // 秒を指定(0~60) 'm' => 201508, // 年と月を指定(201508など) //「日付の範囲指定」で投稿を検索 'date_query' => array( array( 'year' => 2021, // 年を指定(2021など) 'month' => 8, // 月を指定(1~12) 'week' => 31, // 年内の週を指定(0~53) 'day' => 5, // 月内の日を指定(1~31) 'hour' => 2, // 時間を指定(0~23) 'minute' => 3, // 分を指定(0~60) 'second' => 36, // 秒を指定(0~60) 'after' => 'February 1st, 2020',// 指定した日付以降で投稿を取得。'after'=>'2020/02/01'も可能(strtotimeと同じ) 'before' => array( // 指定した日付以前の投稿を取得。'before'=>'2020/02/01'も可能(strtotimeと同じ) 'year' => 2013, // 年を指定(2013など) デフォルトは空 'month' => 2, // 年内の月を指定(1~12) デフォルトは12 'day' => 28, // 月内の日を指定(1~31) デフォルトは月内の末日 ), 'inclusive' => true, // 「after」or「before」で指定された値を含むかどうか 'compare' => '=', // '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' , and 'NOT EXISTS' 'column' => 'post_date', // 照会するカラムを指定。デフォルトは「post_date」 'relation' => 'AND', // OR または AND デフォルトは「AND」 ), ), //「カスタムフィールド」に関連付けて投稿を検索 'meta_key' => 'key', // カスタムフィールドのキーを指定 'meta_value' => 'value', // カスタムフィールドの値を指定(文字列) 'meta_value_num' => 10, // カスタムフィールドの値を指定(数字) 'meta_compare' => '=', //「meta_value」をテストする演算子。使える値は'!='、'>'、'>='、'<'、'=' デフォルト値は'=' 'meta_query' => array( // カスタムフィールドのパラメーター 'relation' => 'AND', // 「AND」または「OR」を指定。meta_query内の配列が「2つ以上」の場合に限る。meta_query配列が1つの場合は使用しない。 array( 'key' => 'country', // カスタムフィールドのキー。 'value' => 'japan', // カスタムフィールドの値 (注意 compareの値が'IN'、'NOT IN'、'BETWEEN'、'NOT BETWEEN'のみ配列をサポート) 'type' => 'CHAR', // カスタムフィールドの型。データ型については本ブログ下部の「meta_queryで使えるデータ型」を参照 'compare' => '=', // 演算子の指定 デフォルト値は'=' 演算子の種類については以下「meta_queryで指定できる演算子の種類」を参照 ), array( 'key' => 'stock', 'value' => array( 1,20 ), 'compare' => 'NOT LIKE', ) ), //権限を持っているユーザーの記事を検索 'perm' => 'readable', // 使える値は’readable’と’editable’ //キャッシュ系パラメーター 'cache_results' => true, // 投稿情報のキャッシュの使用有無(デフォルトはtrue) 'update_post_term_cache' => true, // 投稿タームのキャッシュ更新の使用有無(デフォルトはtrue) 'update_post_meta_cache' => true, // 投稿メタのキャッシュ更新の使用有無(デフォルトはtrue) 'no_found_rows' => false, // falseの時、行数をカウント処理が挿入される(詳細は下部に記載)。(デフォルトはfalse。)。 //検索系のパラメーター 's' => $s, // 検索からクエリーストリング値を渡します。 'exact' => true, //タイトル/投稿の全体から正確なキーワードで検索するか デフォルト値はfalse 'sentence' => true, //語句(フレーズ検索)で検索するか デフォルト値はfalse // ↓ 投稿フィールドパラメーター 'fields' => 'ids' //1つのフィールドで返すか全てのフィールドで返すか デフォルトでは全てのフィールドが返される // 使用できる値↓ // 'ids' 投稿のIDの配列を返します // 'id=>parent' 連想配列を返します ); $query = new WP_Query( $args ); if(have_posts()): //データ有り while ( have_posts() ) : the_post(); //表示処理 endwhile; endif; // 投稿データのリセット wp_reset_postdata(); ?>