2011-01-24 9 views
0

get_posts()WP_Queryはほぼすべてに最適ですが、時には私のすべての投稿を照会し、それらについての非常に基本的なことしか表示したくない場合もあります。get_posts()またはWP_Queryに投稿コンテンツが返されないようにすることはできますか?

たとえば、ブログのタイトルとリンクをすべて表示するページを作成している場合、それらの投稿のコンテンツをクエリする必要はありません。何千もの投稿があり、それぞれの投稿のコンテンツが膨大な場合、そのコンテンツをPHP変数に保存して、タイトルとパーマリンクを取得するだけで無駄です。しかし、それはまさにこれらの2つの機能が果たす役割です!私はこのような何か行うことができるのが大好きだ

$query = array(
    'numberposts' => -1, 
    'exclude_fields' => 'post_content' 
); 
$all_posts = get_posts($query); 

は、カスタムクエリを記述することなくこれを行う方法を知って誰ですか?

(カスタムクエリの欠点 - それは巨大な欠点だ - そしてあなたはWordPressのすべての偉大な既存の機能を使用することができないということである、例えば、すべてのループ機能)

答えて

1

唯一の方法私は、プラグイン(またはあなたのテーマのfunctions.php)からフィルタを使ってSQLクエリを書き直すことを認識しています。コンテンツを削除する必要があるだけなので、必要に応じてテンプレートファイルからこのフィルタを登録および削除する方法を作成する必要があります。明示的な列リストで*を交換することがありますので、

http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_request

、ワードプレスが期待する列をリストしないことによって何かを壊すのは注意してください:ここで

はあなたが上のフックされると思いフィルタです。

一般的に、生のSQLと、必要な少数の場所にタイトル/リンク/その他の情報を得るために必要な小さなコードを書く方が簡単でしょう。

また、WordPressの組み込み関数でのみ書き込むことができます。また、ページをキャッシュしてそのメモリを1日に1回しか使用できないようにすることができます。リフレッシュ。

+0

Dan、優れた応答をいただきありがとうございます。あなたはちょうど私が研究と発見の日の多くを費やしたことを言った。残念ながら、私はこれらのオプションが本当に好きではないので、WordPressがこれをコアに含めるのを待つだけで、その間にプラグインをキャッシュすることに依存します。 +1は良い応答であり、誰かから何も聞こえない場合は、それを正しいとマークします。 –

関連する問題