アドセンス
<?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のパラメータまとめ
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();
?>