WP_Query に対してページングとオフセットを一緒に利用できない 絞り込みの検索などいろいろな条件で投稿等を取得したい場合に便利な WP_Query。なのですが、 paged と offset のパラメータを一緒に使うことはできません。 paged: 何ページ目なのかを指定する。1ページ毎に10個の投稿を取得する設定で、3ページ目なら、21記事目から30記事目までが取得される offset: 最初の4件はいらない、等の場合に使える。いくつか記事を飛ばしたいときに指定する。4を指定すると5記事目から14記事目が取得される で、Making Custom Queries using Offset and Pagination によれば、このふたつのパラメータは同時に使うことができません。ためしてみるとちゃんと、意図したように動かないのを確認できます。理由は、そもそもページネーションの処理
10up Engineering Best Practicesの「Efficient Database Queries(効率的なデータベースクエリー)」を訳してみた。おかしなところ、より良い訳、誤字脱字がありましたらお知らせいただきたく候。 なお、この訳文のライセンスは原文と同じくMITです。 ※冒頭の「パフォーマンス」の部分を追加で訳しました。さんきゅー、ヒッシー! パフォーマンス 効率の良いコードを書くのは、特にエンタープライズのレベルでは、極めて重要です。高トラフィックな状況用に確実にコードを最適化するため、私たちが採用しなければならない方略やベストプラクティスは多くあります。 効率的なデータベースクエリー WordPressでクエリーを行う場合、通常はWP_Query オブジェクトを使うべきです。WP_Query オブジェクトは多くの有用な引き数を取り、get_posts()などの
WordPressは、テンプレートファイルの「ループ」と呼ばれる範囲からループ内部専用の関数を呼び出して、記事や記事の一覧を表示します。これは、個別ページでもトップページでもカテゴリアーカイブでも同じ仕組みです。 今回は、記事ID(post id)の配列から、オリジナルのループを作成する方法を紹介します。 いきなり需要無しにこの記事を読んだ人にとっては「そんな配列はいつ手に入るのか」と思うかもしれませんが、私の場合は、プラグインの提供する情報を使おうと思ったとき、「プラグインのデータベースからIDの配列までは取り出せたけどここからどうしよう」と思ったのがきっかけです。 目次 1. 「ループ」の優位性2. ループの基本3. 記事IDの配列からループを作る方法3.1. クエリの作成3.2. ループの呼び出し3.3. 投稿ID配列の順番を維持する4. 最終的なループ用のコード5. 参考文献 スポ
[2013/07/25 追記] WP_Query で検索してこの記事を見る方が多いのですが、この記事はあまり詳しく解説していないので、WordPressで投稿データを取得する方法について詳しく解説した記事「WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_postsまとめ】」も合わせてご覧ください。 また、WP_Queryで使えるパラメータについては「WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット」も役に立つと思います。 query_postsはもうオススメされない方法になりますよ、とうブログを書いたところ、固定ページのテンプレートにquery_posts()を書いて別の用途に使っている場合はどうしたらええんじゃいというトラバをいただきましたので、簡単に補足。 [WordPress]固定ページで記事一覧を表示す
@junirock78 さんが、ツイッターでカスタム投稿タイプも含めた新着情報を表示する方法を質問されていたので、おせっかいかとは思いつつ話の輪に加わってみました。 方法としては、テンプレートで query_posts または get_posts などを使って取得する方法が一般的だとは思いますが、これだとデータベースへの問い合わせが新たに発生してしまいます。 トップページでの表示であれば、もともと最新の投稿を取得してきていますから、これにカスタム投稿タイプを含めるようにしてしまえば、新たなデータベースへの問い合わせもなく、パフォーマンス的にも良くなりますね。 では、どうすれば良いかというと、データベースへの問い合わせが発生する直前に、トップページだったら(最新の投稿を表示している = is_home() がtrue)、リクエストの条件にカスタム投稿タイプの指定を追加してあげれば、あとは W
[2013/07/25 追記] get_posts で検索してこの記事にアクセスされる方が多いのですが、この記事はquery_postsとget_postsをソースコードで比較したものですので、使い方を知りたい方は「WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_postsまとめ】」も合わせてご覧ください。 query_posts と get_posts。どちらもWordPressから投稿のデータを取得するのに使えるので、特に使い分けを意識していない方も多いのではないかと思います。自分自身もはっきり結論がでているわけではないのですが、今回はこの違いについて考えてみます。 ※ WordPressについての立ち入った内容なので、予めお断りしておきます wp-includes/query.php に書かれています。 function &am
使うたびに引数名を調べたりする事が多いので、チートシート兼スニペット用として置いておく。WordPress3.0版。非推奨・先頭固定投稿引数は除外。 <?php $myQuery = new WP_Query(); // WP_Queryオブジェクト生成 $param = array( //パラメータ //カテゴリー引数 'cat' => '1', //(整数)- カテゴリーIDを指定。コンマ区切りにした複数IDの文字列も指定可能。 'category_name' => 'my cat name', //(文字列)- カテゴリー名を指定(日本語も可)。 'category__and' => array('1', '2'), //(配列)- カテゴリーIDの配列。指定した複数のカテゴリーすべてに含まれる投稿のみを取得。 'category__in' => array('1', '2'), /
WordPress でポストを抽出する方法は色々あり、どこで何を使うべきかで悩んでしまいます。 query_posts() query_posts() はメインループのポストを抽出するために用いられます。以下、日本語 Codex の記述です。 “query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。メインループの他で query_posts() を使用すると、メインループが不正な状態になり期待する結果が得られません。” “query_posts() 関数はページのメインクエリを上書きし、置き換えます。他の目的で使用しないでください。” “query_posts() 関数は新しい WP_Query オブジェクトを作成し、グ
Posted on: 2012/02/13 WordPressのループの仕組みを深く知る query_posts() と get_posts() の違い WordPressループの基本 <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <!-- 表示内容を記述 --> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <div <?php post_class(); ?> id="post-<?php the_ID(); ?>"> <?php the_content(); ?> </div> <?php endwhile; ?> <?php endif; ?> これは WordPressループの基本構文です
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く