メタ値で投稿を取得


27

cp_annonceur値を持つキーを持つすべての投稿を一覧表示したいと思いますprofessionnel


8
質問を投稿する前に、問題を調査し、解決しようとすることが期待されていることに注意してくださいあなたがここで真新しくなければ、質問に答えるのではなく、おそらく投票して投票を続けたでしょう。「Welcome to the Stack」の精神では、これがあなたのフリービーです。今後の質問については、「質問方法」をご覧ください。
s_ha_dum

これにより、以下の回答が受け入れられなかったため、時間を無駄にしただけです。だから私はここに私の2セントを残しています。彼は決して答えず、以下の答えも受け入れませんでした。ここにたくさんの同様の質問がありますが、この質問を削除してみませんか?
mircobabini

回答:


47

あなたが求めているのは meta_query

$args = array(
   'meta_query' => array(
       array(
           'key' => 'cp_annonceur',
           'value' => 'professionnel',
           'compare' => '=',
       )
   )
);
$query = new WP_Query($args);

必要な情報はすべてCodexにあります。


3
@Beginner:これで問題が解決した場合は、「Accepted」とマークしてください。左側の投票矢印の近くにあるチェックマークを探します。
s_ha_dum

8

それを行うには2つの方法があります。

  1. メインクエリをインターセプトしますpre_get_posts

    add_action( 'pre_get_posts', function( $query )
    {
        // only handle the main query
        if ( ! $query->is_main_query() )
            return;
    
        $query->set( 'meta_key',   'cp_annonceur' );
        $query->set( 'meta_value', 'professionnel' );
    } );
  2. 追加のクエリを追加する

    $second_loop = get_posts( array(
        'meta_key'   => 'cp_annonceur',
        'meta_value' => 'professionnel',
    ) );

2
get_posts()を使用して短い方法を知ってうれしい
アンドリューウェルチ

8

カスタムセレクトを使用しました(パフォーマンスが向上する可能性があります)

$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta
WHERE meta_key = 'cp_annonceur' AND  meta_value = 'professionnel' LIMIT 1", ARRAY_A);

https://tommcfarlin.com/get-post-id-by-meta-value/から着想


1
パフォーマンスは向上するかもしれませんが、データを検索(およびキャッシュ)するためのWordpress機能を持つという考えはすべて捨てられます。また、WPがテーブル構造の変更を決定した場合はどうなりますか?:)
エレノールパス

2

WordPressのMetaクエリで目的の結果を取得できます。

// the meta_key 'diplay_on_homepage' with the meta_value 'true'
$cc_args = array(
    'posts_per_page'   => -1,
    'post_type'        => 'post',
    'meta_key'         => 'cp_annonceur',
    'meta_value'       => 'professionnel'
);
$cc_query = new WP_Query( $cc_args );

メタクエリに関する詳細なガイドについては、次のブログを参照してください。http//www.codecanal.com/get-posts-meta-values/


このpost_per_page値が-1である理由を知っていますか?
アブヘイGawade

1
@AbhayGawadeそのパラメーターを使用して結果の最大数を制限できます。-1は制限なしを意味します。
クッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.