【WordPress】覚えておきたい万能なデータ取得方法

nekoburanket

こないだ書いたこの記事へのアクセス
思ったより多かったので需要あるのかなぁと思って書きます。ありがとうございます。
そのうち応用編もやってみたいなぁと思います。

プログラム中のデータ取得にはMysql等のDBへ検索をします。
グーグルでもキーワード入れて検索します。
そのキーワードを、DBではクエリって言ったりします。

少ない条件ならいいんですけど、
条件が複雑になってくると、僕はクエリを作るだけで結構な労力がかかります。

でもWordPressにはそんなクエリを考える労力を軽減してくれる素敵なクラス
WP_Queryって言うのがあります。今日はそんな大した事書きませんけど、
案外簡単なんだって思って貰いたいだけです。

今日は、そのWP_Queryをこういうケースで使うだろうって言うコードを載せていきます。

WP_Queryクラス

これがデータベースへの問い合わせをやってくれる機械みたいなクラスです。
材料(パラメータ)を入れて、ちょっとも待たないうちにデータを返してくれます。
データの件数にもよりますが・・・。

結果にアクセスするには以下です。

$query
$query_vars
$query_object
$post_count
$posts
$found_posts
$max_num_pages
$current_post
$post

その他のis_singleとかboolで戻るもの。

よく使うのは、このpostsかpostかqueryくらいだと思います。
次からはいくつかのWP_Queryを使って色んなデータを取得していきます。

データへのアクセス方法

あ、その前に折角データの取得が出来たって
アクセスができなきゃ意味が無いので
とりあえず書いておきます。


$hoge = new WP_Query(こんなかにクエリ); //クラスを呼び出します。
$hoge->posts; //プロパティにアクセスします。

もちろんプロパティはposts以外にもさっき言ったやつがあるので
queryとかquery_varとかにもアクセスしてみてください。
クエリがあってればどっかにあります。

WP_Queryでカテゴリー取得

これはカテゴリーの名前で検索をかけています。
ほかにも、category_IDで検索が出来たり、
複数のカテゴリで検索が出来たりします。

$obj = new WP_Query(
          array(
                    'category_name' => 'js','php','web',
               )
     );

パラメータの説明に関しては
CODEXHissyさんのとこで見ていただくのが分かりやすいです。
Hissyさんのとこは、最近更に情報が増えてるのでオススメですし、
なにより末翻訳部分がありません。日本語です。

WP_Queryで子カテゴリの取得

これは以前、別の記事で多分コード書きましたけど
データ取得だけにするとこんな感じになると思います。

$obj = new WP_Query(
               array(
                    'tax_query' => array(
                    'taxonomy' => 'category',
                    'field' => 'slug',
                    'terms' => 'google',
                    )
               )
     );

fieldをidにすれば、termsのとこにはタームIDを入れて検索できます。
tax_queryの中にarrayが入るので注意してくださいネ。
これいつも思うんですけど、子カテゴリってtaxonomy扱いなんでしょうか。
ANDとかORとか使うこともできるので、絞り込みたいとか、条件を広げたいとか
夢は広がりますが、それはまた今度にします。

WP_Queryでタグの取得

これもカテゴリと一緒のように、IDで検索もできますし、
AND、ORなどの条件をつけて検索することもできます。
taxonomyと違うのはfieldによって、タイプを切り替える必要がないってことです。
既にあるパラメータで対応が可能です。
なお、パラメータについては(ry

$obj = new WP_Query(
          array(
                    'tag' => 'centos',
               )
     );

WP_Queryでタクソノミーを取得

未だにこのタクソノミーがあいまいなんですけど
カスタム投稿で設定したカテゴリーの様なものを取得することができます。

パラメータから自分が解釈したところによると、
タクソノミー名というのは、register_post_type()の第二引数のパラメータの中
taxonomiesをさします。で、そこから投稿画面に現れた自分で作ったカテゴリーなりタグなりっていうのは
こいつらに属するタームっていうことになると思います。多分!

で、多分予想なんですけど、投稿タイプpostのカテゴリーってのも実は
タクソノミーの中の一つなんですが、予め定義されてるんだと思います。
これ本当に予想なので、なんかいっとるわくらいに思って下さい。

それではコードを見ていきましょう


$obj = new WP_Query(
               array(
                    'post_type' => "websites",
                    'tax_query' => array(
                    'taxonomy' => 'sitecat',
                    'field' => 'slug',
                    'terms' => 'mondai',
                    )
               )
     );

こうなります。
注意したいのはpost_typeはタクソノミー製作時に自分が考えた
register_taxonomy()の第二引数に入れたタクソノミー名を使うことです。
これが投稿タイプ名です。

taxonomyはタクソノミー名なのでregister_post_type()の第二引数のパラメータの中
taxonomiesで定義したタクソノミー名の中から使いたい奴を選択します。

これでタクソノミーの扱いも自由自在です。
理解できれば、WordPressでやりたいことは大概できます。

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

おすすめの記事