今日はWordPressのメインクエリ関数であるquery_posts()についてお話します。この関数は私が作成しているテーマで何度も使用しているためです。
query_posts() クエリ関数は、WordPress のメイン ループ (ループ) に表示される投稿を決定します。このため、query_posts 関数は、ページ上に二次ループを生成するのではなく、ホームページ ループ (ループ) を変更するためにのみ使用されます。メイン ループの外側に追加のループを生成する場合は、新しい独立した WP_Query オブジェクトを作成し、これらのオブジェクトを使用してループを生成する必要があります。メイン ループの外側のループで query_posts を使用すると、メイン ループが偏って実行され、ページ上に表示したくないコンテンツが表示される可能性があります。
query_posts() クエリ関数は多数のパラメーターを受け取り、その形式は URL のパラメーター形式と同じです (たとえば、p=4 は ID 4 の記事を意味します)。ここでは、query_posts 関数の一般的に使用される構文形式の例をいくつか示します。
1. ブログのトップページから特定のカテゴリーを除外します
次のコードをindex.php ファイルに追加して、ホームページに表示される記事がカテゴリ 3 以外のどのカテゴリからでも表示されるようにします。
PHPコード
-
-
if (is_home()) {
-
Query_posts("cat=-3");
}-
?>-
さらに多くのカテゴリを除外することもできます。
PHPコード
if (is_home()) { -
Query_posts("cat=-1,-2,-3");
-
}
-
?>
-
2. 指定した記事をクエリします
指定した記事を取得するには、次のステートメントを使用します:
PHPコード
//ID 値 5 の記事を取得します
query_posts('p=5');
?>
クエリ ステートメントで Read More 関数を使用する場合は、グローバル変数 $more を 0 に設定してください。
PHPコード
//ID 値 5 のページを取得します -
query_posts('p=5');
-
-
グローバル $more
-
//$more を初期化します
-
$more = 0;
-
// クエリ結果をループします -
while (have_posts()) : the_post();
-
the_content('投稿全文を読みますか?');
ついでに-
?>-
-
3. 指定したページを取得します-
-
指定されたページを取得するには、次のステートメントを使用します:
PHPコード
query_posts('page_id=7'); // ページ ID 7 のページを取得します
?>
-
または
PHPコード-
-
query_posts('ページ名=about');
?>
サブページを取得するときは、サブページとその親ページのエイリアスをスラッシュで区切って指定する必要があります。例: -
PHPコード
-
query_posts('ページ名=親/子');
?>
上記のメソッドはすべて、query_posts($query_string) の形式を使用してこの関数を呼び出します。次に、配列を使用してパラメーター変数を渡す別のメソッドを示します。
PHPコード
-
query_posts(array(
-
'猫' => 22、
-
'年' => 現在の年、
-
'monthnum' => $current_month,
-
'順序' => 'ASC'、
;
-
));
文字列メソッドと比較して、配列形式はより直感的で、エラーが発生しにくくなります。
以下に、よく使用されるパラメータをいくつか示します。私が使用したこともあれば、使用していないものもあります。
分類パラメータ
特定のカテゴリの記事のみを表示します。
猫 - カテゴリ ID を使用する必要があります-
カテゴリ名-
category_and - カテゴリ ID を使用する必要があります-
category_in - カテゴリ ID を使用する必要があります-
category_not_in - カテゴリ ID を使用する必要があります-
IDに基づいて単一のカテゴリを表示
特定のカテゴリ ID (およびこのカテゴリの下のサブカテゴリ) の記事のみを表示します:
PHPコード
query_posts('cat=4');
-
カテゴリ名に基づいて単一のカテゴリを表示します
特定のカテゴリ名の記事のみを表示します:
PHPコード
query_posts('category_name=スタッフホーム');
-
IDに基づいて複数のカテゴリを表示
指定された複数のカテゴリ ID の記事を表示します:
PHPコード
query_posts('cat=2,6,17,38');
- 特定のカテゴリの記事を除外します
特定のカテゴリの記事を除くすべての記事を表示します。除外されたカテゴリ ID には先頭にマイナス記号 ('-') が付けられます。
PHPコード
query_posts('cat=-3');
上記のコードは、ID 3 のカテゴリの記事を削除します。
-
複数のカテゴリを処理します
複数のカテゴリに属する記事を表示します。次のコードは、カテゴリ 2 とカテゴリ 6 の両方に属する記事を表示できます:
PHPコード
query_posts(array('category__and' => array(2,6)));
カテゴリ 2 またはカテゴリ 6 の記事を表示したい場合は、上で紹介した cat を使用するか、category_in 関数を使用できます (カテゴリの下のサブカテゴリの記事はここには表示されないことに注意してください):
PHPコード
-
query_posts(array('category__in' => array(2,6)));
次の方法で複数のカテゴリの記事を除外できます:
PHPコード
-
query_posts(array('category__not_in' => array(2,6)));
ラベルパラメータ
特定のタグの下にある記事を表示します。
-
tag ——タグIDを使用する必要があります
tag_id - タグIDを使用する必要があります
tag_and —— タグIDを使用する必要があります
tag_in - タグIDを使用する必要があります
-
tag_not_in - タグIDを使用する必要があります
-
tag_slug_and - タグIDを使用する必要があります
-
tag_slug_in - タグIDを使用する必要があります
-
-
- 特定のタグの記事を取得します
-
PHPコード
query_posts('タグ=料理');
複数のタグのいずれかで記事を取得します
PHPコード
-
query_posts('タグ=パン+パン作り+レシピ');
複数のタグ
ID 37 と 47 のタグに属する記事を表示します:
PHPコード
query_posts(array('tag__and' => array(37,47)); -
ID 37 または 47 のタグの下に記事を表示するには、tag パラメーターまたは tag_in を使用できます:
PHPコード
query_posts(array('tag__in' => array(37,47)); -
表示されている記事はタグ 37 にもタグ 47 にも属しません:
PHPコード
query_posts(array('tag__not_in' => array(37,47)); -
tag_slug_in は、一致するエイリアスが異なることを除いて、tag_slug_and とほぼ同じように機能します。
作成者のパラメータ
著者に基づいて記事を選択することもできます。
著者=3-
author=-3 ——ID 3 の著者によって公開された記事を除外します-
author_name=ハリエット-
注: author_name は user_nicename フィールドを操作し、author は作成者 ID フィールドを操作します。
ID 1 の著者によって公開されたすべてのページを表示し、ページをタイトル順に配置し、ページ リストの上に固定された記事がないようにします:
PHPコード
query_posts('caller_get_posts=1&author=1&post_type=page&post_status=publish&orderby=title&order=ASC');
-
記事とページのパラメータ
単一の記事またはページを取得します。
‘p’ => 27 - 記事 ID で記事を表示します
-
「name」 => 「about-my-life」 —— 特定の記事に対するクエリ、クエリには記事のエイリアスが含まれています
-
‘page_id’ => 7 —— ID 7 のページをクエリします
-
「pagename」 => 「about」 —— これはページのタイトルではなく、ページのパスであることに注意してください
-
「posts_per_page」 => 1 を使用します。3 つの記事を表示するには、「posts_per_page」 => 3 を使用します。すべての投稿を表示するには、'posts_per_page' => -1 を使用します
-
「showposts」 => 1 – 3 つの投稿を表示するには、「showposts」 => 3 を使用します。すべての投稿を表示するには、「showposts」 => -1 を使用します。廃止されました。
-
‘post__in’ => array(5,12,2,14,7) ——取得したい記事IDを指定します
-
‘post__not_in’ => array(6,2,8) ——取得したくない記事IDを除外します
-
‘post_type’ => ‘page’ ——ページを返します。デフォルト値は投稿です。使用可能な値には、any、添付ファイル、ページ、投稿、またはリビジョンが含まれます。 any は、リビジョンを除くすべてのページ タイプを取得します。
-
「post_status」 => 「publish」 – 公開されたページを返します。利用可能な値には、保留中、ドラフト、将来、プライベート、ゴミ箱も含まれます。継承の詳細については、「get_children」を参照してください。ゴミ箱ステータスはWordPress 2.9で追加されました。
-
‘post_parent’ => 93 - ページ 93 のサブページを返します。
-
固定記事パラメータ
固定記事機能は WordPress 2.7 で導入されました。クエリでは、記事が
caller_get_posts=1
パラメーターによって除外されていない限り、「トップ」として設定された記事が他の記事よりも前に表示されます。
array('post__in'=>get_option('sticky_posts')) —— すべてのスティッキー投稿の配列を返します
-
caller_get_posts=1 - 返された記事の上にあるピン留めされた記事を除外しますが、投稿リストを返すときに、ピン留めされた記事を自然な順序でリストに配置します。
-
最初の固定記事に戻る
PHPコード
-
$sticky=get_option('sticky_posts') ;
query_posts('p=' . $sticky[0]);
-
または
PHPコード
$args = array(
-
'posts_per_page' => 1,
-
'post__in' => get_option('sticky_posts')、
;
-
'caller_get_posts' => 1
;
-
);
クエリポスト($args);
-
注: 2 番目のメソッドは、最新の公開された固定記事のみを返すことができます。現在固定された記事がない場合は、最新の公開された記事を返します。 -
最初に固定された記事に戻る; 何もない場合、コンテンツは返されません
PHPコード
$sticky = get_option('sticky_posts');
$args = array(
'posts_per_page' => 1, -
'post__in' => $sticky、-
'caller_get_posts' => 1 - ;
);
-
クエリポスト($args);
if($sticky[0]) { -
// ここに内容を挿入します... -
}-
-
固定されたすべての記事をクエリから除外します-
PHPコード
-
query_posts(array("post__not_in" =>get_option("sticky_posts")));
特定のカテゴリにあるすべての記事を返しますが、記事リストの上に固定された記事は表示されません。 「固定」に設定した記事はすべて通常の順番(日付順など)で表示されます
PHPコード
-
query_posts('caller_get_posts=1&posts_per_page=3&cat=6');
特定のカテゴリのすべての記事に戻り、固定された記事をまったく表示せず、ページネーションを保持します
PHPコード
-
$paged = (get_query_var('paged')) get_query_var('paged') : 1;
$sticky=get_option('sticky_posts');
$args=array(
「猫」=>3、
「caller_get_posts」=>1、-
'post__not_in' => $sticky、-
「ページ化」=>$ページ化、-
);
-
Query_posts($args)
-
?>
-
時間パラメータ-
特定の期間内に公開された記事を検索します。 -
-
hour= -hour (時、 -0 から 23 の範囲)
-
minutes= – 分 (分、-0 ~ 60 の範囲)
-
Second= – 秒 (秒、- 範囲は 0 ~ 60)
day= – 月の日 (日、-範囲は 1 から 31)
monthnum= – 月番号 (月、-範囲は 1 ~ 12)
year= – 4 桁の年 (2009 年など)
-
w= – 年間の週 (年間の週、- 0 から 53 の範囲)、MySQL WEEK コマンド Mode=1 コマンドを使用します
-
-
- 最近公開した記事に戻る
- PHPコード
-
$today = getdate();
query_posts('year=' .$today["year"] .'&monthnum=' .$today["mon"] .'&day=' .$today["mday"] - );
12月20日公開の記事に戻る
PHPコード
query_posts(monthnum=12&day=20' );
-
2009 年 3 月 1 日から 3 月 15 日までに公開された記事に戻る
PHPコード
-
//wp-hackers メール リストの Austin Matzko のコードに基づく
-
関数 filter_where($where = '') {
-
//2009 年 3 月 1 日から 3 月 15 日までの投稿
-
$where .= " AND post_date >= '2009-03-01' AND post_date
$where を返します。
-
}
-
Add_filter('posts_where', 'filter_where');
クエリ投稿($クエリ文字列) -
?>-
-
過去 30 日間に公開された記事に戻る-
PHPコード
//wp-hackers メール リストの Austin Matzko のコードに基づく
関数 filter_where($where = '') { -
//過去 30 日間の投稿 -
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) - ;
$where を返します。
-
}
-
Add_filter('posts_where', 'filter_where');
クエリ投稿($クエリ文字列) -
?>-
-
過去30日間~過去60日間に公開された記事に戻ります- PHPコード
-
-
//wp-hackers メール リストの Austin Matzko のコードに基づく
-
関数 filter_where($where = '') {
-
// 30 ~ 60 日経過した投稿
-
$where .= " AND post_date >= '" . date('Y-m-d', strtotime('-60 days')) . " AND post_date
-
$where を返します。
}-
Add_filter('posts_where', 'filter_where');
-
クエリ投稿($クエリ文字列)
-
?>
-
ページネーションパラメータ
paged=2 - 「古い投稿」リンクをクリックした後の 2 ページ目に表示される記事を表示します
-
photos_per_page=10 - 各ページに表示される投稿の数。値が -1 の場合、すべての投稿が表示されます。
-
order=ASC - 記事を時系列順に表示します。値が DESC の場合は、記事を時系列の逆順に表示します (デフォルト)
-
オフセットパラメータ
通常の状況では、offset パラメータを使用して、クエリ セット内の 1 つ以上の最初のアーティクルを削除または無視できます。
以下に、最新の投稿に続く 5 つの投稿を示します:
PHPコード
query_posts('posts_per_page=5&offset=1');
-
パラメータの並べ替え
orderby=著者
orderby=日付-
orderby=category ——注: このパラメータは WordPress 2.8 では使用できず、廃止された可能性があります-
orderby=タイトル-
orderby=変更されました-
orderby=menu_order-
orderby=親-
orderby=ID-
オーダーバイ=ランド-
orderby=meta_value - meta_key=some value ステートメントもクエリパラメータに含める必要があります-
orderby=none – 注文なし —— (WP 2.8の新機能)-
orderby=comment_count ——(WP 2.9の新機能)-
-
注文パラメータ
昇順または降順で並べ替えるかを決定しますパラメータを並べ替えます
order=ASC - 最低値から最高値への昇順
order=DESC - 最高値から最低値への降順-
-
カスタムフィールドパラメータ
カスタムのキーワードまたは値に基づいて記事 (またはページ) を取得します。
メタキー=
メタ値=-
meta_compare= - metavalue= のテストに使用される演算子、デフォルト値は '='、その他の可能な値には '!='、'>'、'>='、'
-
キーワード「color」と値「blue」を含む記事を返します:
PHPコード
query_posts('meta_key=color&metavalue=blue');
カスタム フィールドの値に関係なく、カスタム フィールドのキーワード「color」を含む記事を返します: -
PHPコード
query_posts('meta_key=color');
キーワードに関係なく、カスタムフィールド値「color」を持つ記事を返します:
PHPコード-
query_posts('metavalue=color');
カスタム フィールドのキーワードに関係なく、カスタム フィールドの値が「green」であるページを返します: PHPコード
-
query_posts('post_type=page&metavalue=green');
カスタム キーワードが「color」で、カスタム フィールド値が「blue」ではない記事とページを返します:
PHPコード
query_posts('post_type=any&meta_key=color&meta_compare=!=&metavalue=blue');
-
カスタム フィールドのキーワードが「マイル」で、カスタム フィールドの値が 22 以下の記事を返します。データは数値ではなく文字列として保存されるため、フィールド値 99 はフィールド値 100 より大きいとみなされることに注意してください。
リーリー
関節パラメータ
上記の例からわかるように、& 記号を使用して次のようなさまざまなパラメーターを接続できます。
PHPコード
uery_posts('cat=3&year=2004');
-
当月に公開されたカテゴリ 13 に属するホームページ上の記事を表示します:
PHPコード
if (is_home()) {
query_posts($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp')));
-
}
-
WP 2.3 では、次のパラメーター共用体は、カテゴリー 1 とカテゴリー 3 の両方に属する 2 つの記事を記事タイトルの降順で返します。
PHPコード-
query_posts(array('category__and'=>array(1,3),'posts_per_page'=>2,'orderby'=>title,'order'=>DESC));
WP 2.3 および WP 2.5 では、次のパラメーターの組み合わせにより、「apples」タグを持つカテゴリ 1 に属する記事が返されます。
PHPコード
-
query_posts('cat=1&tag=リンゴ');
しかし、バグのため、コードは正常な結果を表示できませんでした。解決策はあります: + 記号を使用して複数のタグを検索します:
PHPコード
query_posts('cat=1&tag=リンゴ+リンゴ');
-
これは私たちが見せたい結果を示しています。
使用上のヒント
-
[設定] > [読み取り] の [表示するブログ ページの最大数] パラメータは、クエリの結果に影響します。[設定] > [読み取り] の設定をオーバーライドするには、タグに「posts_per_page」パラメータを追加する必要があります。例:
PHPコード
query_posts('category_name=カテゴリ名&posts_per_page=-1'); // カテゴリからすべてを返します
注: query_posts 関数は、ページのメインクエリを書き換えて置き換えます。予防措置として、query_posts を他の目的に使用しないでください。
-
出典: http://www.zuluo.net/2012/2012-01/wordpress-query_posts.html
http://www.bkjia.com/PHPjc/735067.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/735067.html
技術記事今日は、WordPress の主要なクエリ関数、query_posts() について説明します。私が作成しているテーマでこの関数を何度も使用しているためです。 query_posts() クエリ関数は、Wo... に表示される記事を決定します