web-dev-qa-db-ja.com

すべての投稿をループ処理する最速の方法

私はプラグインがインストールされたら人のデータベース内のすべての投稿にいくつかの作業を行うプラグインでバックグラウンドプロセスを実行する必要があります。私はwordpressを扱うのが非常に新しいので、私の研究は私がwpクエリを使うことができるか、または私が "ループ"を使うことができることを示しました。

私は絶対にすべての単一の投稿速度を通過しているので、重要です。タイトル、本文、カテゴリ、メタタグ、発行状態、および保護されているパスワードを確認する必要があります。だからこれに基づいて、これらのどれが最速だろうか?

2
Thirlan

"The Loop"は、while (have_posts()): the_post();によって返される投稿の配列を反復処理するために使用されるWP_Query()ループに付けられた名前です。投稿の問い合わせに使用されるもう1つの関数はget_posts()関数です。これは、foreachループでループ処理できる単純な(拡張されていない)配列を返します。

私はそれが全体的に重要であるとは思わない。しかし、巧みに操作しているのであれば、get_posts()メソッドはループするたびにsetup_postdata()(テンプレートタグなどを読み込む)を呼び出さないため、わずかに高速でメモリ消費量が少なくなります。

いずれにせよ、あなたはたぶん何千もの投稿を持ついくつかのセットアップでメモリを使い果たすことになるでしょう…あなたがその場合フォールバックで構築することを確認してください。

4
goldenapples

「ループ」は、WP_Queryオブジェクトに適用されるforeachループに適用される単なる名前です。だからあなたは両方が必要です。通常、ループにはthe_post()も含まれているため、テンプレートタグを使用できます。

しかし別の選択肢もありますが、それは速いかもしれません。あなたが何をする必要があるかに応じて、あなたはcouldあなたが編集したいフィールドだけを検索するために直接データベースクエリをする。しかし、カテゴリとメタタグも必要なので、それは複雑な結合になります。より簡単な更新と下位互換性のために、通常のWP_Queryを使用することもできます。

0
Taylor Dewey