メタデータを含む多数の投稿を取得する必要があります。もちろん、標準の投稿クエリを使用してメタデータを取得することはできないため、通常は投稿get_post_custom()ごとにを行う必要があります。
次のようなカスタムクエリを1つ試しています。
$results = $wpdb->get_results("
    SELECT  p.ID,
        p.post_title,
        pm1.meta_value AS first_field,
        pm2.meta_value AS second_field,
        pm3.meta_value AS third_field
    FROM    $wpdb->posts p LEFT JOIN $wpdb->postmeta pm1 ON (
            pm1.post_id = p.ID  AND
            pm1.meta_key    = 'first_field_key'
        ) LEFT JOIN $wpdb->postmeta pm2 ON (
            pm2.post_id = p.ID  AND
            pm2.meta_key    = 'second_field_key'
        ) LEFT JOIN $wpdb->postmeta pm3 ON (
            pm3.post_id = p.ID  AND
            pm3.meta_key    = 'third_field_key'
        )
    WHERE   post_status = 'publish'
");動作しているようです。同じ投稿で複数のメタ値を許可する方法でこれらのメタフィールドのいずれかを使用すると、トリップします。私はそれを行うための結合を考えることはできません。
したがって、質問1:複数値のメタフィールドを取り込むための結合、サブクエリ、その他はありますか?
しかし、質問2:それは価値がありますか?どのように多くのpostmeta2-クエリアプローチが良好となる前に、私は追加しないテーブルを結合?あるクエリですべての投稿データを取得してから、関連するすべてのポストメタを別のクエリで取得し、PHPで1つの結果セットでメタと投稿データを結合することができます。それが可能であれば、それは単一のかつてないほど複雑なSQLクエリよりも速くなるでしょうか?
私はいつも「できる限り多くの作業をデータベースに与える」と考えています。これはわかりません!
get_posts()、その後、get_post_meta()それらの一つ一つのために?@ MannyFleurmond、WPのビルトインキャッシングに関するハード情報を見つけることは困難ですが、リクエストごとにキャッシュすることはわかっています。このデータを取得するためのサーバーへの呼び出しはAJAX呼び出しであり、他のものがその前に何かを取得することはないと思います。