WP_Queryの使い方

5733 ワード

WPについて話していますQueryの前に2つの名詞を区別します.
  • WP_QueryはWordpressが持参した複雑なリクエストを処理するためのクラスです(ここでのリクエストの内容は文章だけでなく、ページ、ユーザー、分類などの他の情報も含まれています).
  • $wp_queryはwp-blog-header.phpファイルで定義されたWP_現在要求されている情報を提供するQueryエンティティオブジェクト.

  • Wordpressのトップページまたは分類ページにアクセスすると、WordpressはデフォルトでWP_を作成します.Queryの例は、このページのメインループとして作成されます.Wordpressトピックのソースコードを表示すると、while(have_posts():the_post(); を選択します.これが,本ページのメインループに文章があるかどうかを検索し,表示する方法である.しかし、多くの場合、ページのメインループに加えて、人気のある文章、誰かの特定の文章などを表示するために使用される場合など、独自のクエリーオブジェクトを作成する必要があります.
    ここでは主にWPについてお話ししますQueryクラスにはどのような方法と属性がありますか.公式文書では、WP_が優先的に記述されています.Queryの属性ですが、方法からして、ユーザーに分かりやすいと思います.
    方法
    WP_Queryクラスはstringまたは配列タイプのクエリ条件をそのコンストラクション関数として受け入れ、そのコンストラクション関数を除去し、WP_Queryの内部には、次のような機能を持つ13の関数も含まれています.
    Init():クラス内の初期化関数(コンストラクション関数ではないことに注意)は、オブジェクトを初期化し、すべての属性(null、0またはFalseに設定)をクリアします.
    parse_query( $query ): parse_queryはStringタイプのクエリー文字列を受け入れ、解析したパラメータをクラス自体に割り当てます.コンストラクション関数にstringタイプのパラメータが入力されると、このメソッドは呼び出され、stringタイプのパラメータを配列構造に変換します.
    parse_query_vars():自体は実際の作業をしていませんが、前のクエリー関数を再解析しただけです.パラメータを持たないparse_を呼び出すことに相当します.query.(実際、ソースコードではこのように実現されています).
    get($query_var)、set($query_var、$value):クエリー条件のプロパティを個別に設定または取得します.読みにくいクエリー条件を長く書きたくない場合は、set関数を試してみてください.
    &query($query) , &get_posts():queryは、クエリー条件を受け入れ、データベースから対応するコンテンツを検索するために使用されます.コンテンツが記事の場合、2番目のメソッドget_postsはこれらの文章を返すために使用できます.注意get_を呼び出すpostsと同時に、オブジェクトの$posts and$post_が変更されます.countの2つのパラメータ.
    have_posts(), the_post(), next_post(), rewind_posts(): WP_Queryはクエリー時にキューを作成し、キューには検索されたすべての文章が含まれます.この4つの方法は、キューを操作するために使用されます.名前は一目瞭然postsはキューに文章があるかどうかを判断し、あるならthe_postは現在の文章を手に入れ、next_postキューを1つ後ろに移動させ、rewind_postsはキューの先頭に戻ります.
    get_queried_object(), get_queried_object_id():最初から言ってたけど、WQ_Queryは、文章やページを検索するだけでなく、ユーザーや分類などの他の情報を検索するためにも使用できます.この2つの方法は、現在クエリーされているオブジェクトを判断し、オブジェクトまたはオブジェクトのIDを返すことです.
    ツールバーの
    上記の方法を知っていれば、属性は理解しにくくありません.
    $query, $query_vars: WP_Queryのクエリー条件.$queryは文字列形式、$query_varsは解析後の配列フォーマットです.
    $queried_object, $queried_object_id:対応get_queried_object()とget_queried_object_id()メソッド.文章、ページ、ユーザー、分類かもしれません.
    $posts:調べられたすべての文章.
    $post_count, $found_posts, $max_num_pages:それぞれ記事の総数、クエリーされた記事の数、合計ページ数です.
    $current_post,$post:現在の記事のシーケンス数と現在のPostオブジェクト.
    その他のプロパティには、$is_single, $is_page, $is_archive, $is_preview, $is_date, $is_year, $is_month, $is_time, $is_author, $is_category, $is_tag, $is_tax, $is_search, $is_feed, $is_comment_feed, $is_trackback, $is_home, $is_404, $is_comments_popup, $is_admin, $is_attachment, $is_singular, $is_robots, $is_posts_page, $is_paged.その名前から、基本的にその意味がわかるので、あまり説明しません.
    ≪インスタンス|Instance|emdw≫
    上記の説明だけでは、WPの使い方がわかりにくいかもしれません.Query、次はいくつかの例を通じて、それをよりよく理解させます.
    作者による文章の取得
    作者の文章を調べる
    IDで検索します.
    $query = new WP_Query( 'author=123' );

    ユーザー名に基づいて検索します.
    $query = new WP_Query( 'author_name=rami' );

    複数人の記事を検索
    $query = new WP_Query( 'author=2,6,17,38' );

    ある人に属さない文章を検索する
    「-」をマイナス記号で除外できます.
    $query = new WP_Query( 'author=-12' );

    分類ディレクトリで検索
    特定の分類の下にある記事を検索
    クエリ文では、cat,category_(cat,category_)というパラメータが使用される場合があります.name, category__and, category__and, category__in, category__not_in.例は次のとおりです.
    分類の下にある文章(そのサブ分類を含む)をクエリーします.
    $query = new WP_Query( 'cat=4' ); //    ID
    $query = new WP_Query( 'category_name=staff' ); //  slug
    

    分類の下にある文章をクエリーします(サブ分類は含まれません).
    $query = new WP_Query( 'category__in=4' );

    同様に、複数の分類の下の文章をクエリーします.
    $query = new WP_Query( 'cat=2,6,17,38' ); // ID
    $query = new WP_Query( 'category_name=staff,news' ); // slug
    

    分類を含まない
    $query = new WP_Query( 'cat=-12,-34,-56' );

    複数の分類に同時に属する記事を検索
    IDが2と6の2つの分類の文章にクエリが同時に含まれる文.(注意区分:category_inは「or」の関係、cateory_andは「並」の関係です.
    $query = new WP_Query( array( 'category__and' => array( 2, 6 ) ) ); // 2 and 6
    $query = new WP_Query( array( 'category__in' => array( 2, 6 ) ) ); // 2 or 6
    

    同じように、次の文は理解しにくくありません.IDが2または6の分類の文章は含まれません.
    $query = new WP_Query( array( 'category__not_in' => array( 2, 6 ) ) );

    ラベルによるクエリー
    ラベルクエリを使用できる条件は、tag,tag_です.id, tag__and, tag__in, tag__not_in, tag_slug__and, tag_slug__in.
    上記の分類に対応するクエリー方法は、各条件がどのように使用されているかを理解するのは難しくありません.私は一つ一つ例を挙げません.(注意:名前にslugがない場合はtagのidでクエリーします).
    Taxonomy
    Taxonomyは一般的な分類です.TagもCategoryも実はTaxonomyの中で計算することができて、実際にTagとCategoryもTaxonomyを利用して実現して、あなたも自分のTaxonomyを作成することができて、興味があれば私たちは後の文章の中でTaxonomyを議論し続けることができます.Taxonomyを使用すると、ニーズに合ったさまざまなクエリー関数を作成できます.ここでは、複雑な例を1つだけ説明します.
    $args = array(
    	'post_type' => 'post',
    	'tax_query' => array(
    		'relation' => 'OR',
    		array(
    			'taxonomy' => 'category',
    			'field' => 'slug',
    			'terms' => array( 'quotes' )
    		),
    		array(
    			'taxonomy' => 'post_format',
    			'field' => 'slug',
    			'terms' => array( 'post-format-quote' )
    		)
    	)
    );
    $query = new WP_Query( $args );
    

    この例では、「quotes(分類されたslug)分類」または「post_format」が「post-format-quote」である文章('post_type'=>'post')をクエリーします.
    検索
    WP_Queryは、次の例を参照して、簡単な文キーワードベースの検索機能も提供しています.
    $query = new WP_Query( 's=keyword' );

    ただし、Wordpressは単に文字列を一致させるだけで、検索エンジンのような検索結果が期待できません.
    まとめ
    WP_Queryクラスには非常に多くの内容が含まれていますが、ここではその一部を紹介しただけで、興味のある読者はClass Reference/WP Queryについてもっと知ることができます.
    最後に、この文章を読み続けてくれた皆さんに感謝します.^^;