Holen Sie sich Beiträge von Meta-Wert

26

Ich möchte alle Beiträge auflisten, die einen Schlüssel cp_annonceurmit dem Wert haben professionnel.

Anfänger
quelle
8
Bitte beachten Sie, dass Sie das Problem untersucht und versucht haben, es zu lösen, bevor Sie eine Frage stellen. Wären Sie hier nicht brandneu gewesen, hätte ich die Frage wahrscheinlich runtergestimmt und weitergemacht, anstatt sie zu beantworten. Im Sinne von "Welcome to the Stack" ist dies Ihre freie Biene. Bitte werfen Sie einen Blick auf Fragen für zukünftige Fragen.
s_ha_dum
Dieses hat mich nur einige Zeit verlieren lassen, weil die Antwort unten nicht akzeptiert wurde. Also lasse ich hier meine 2 Cent. Er hat weder geantwortet noch die Antwort unten akzeptiert. Warum entfernen Sie diese Fragen nicht einfach, während es hier Dutzende ähnlicher Fragen gibt?
mircobabini

Antworten:

46

Was Sie verlangen, ist a meta_query

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

Alle Informationen, die Sie benötigen, befinden sich im Codex .

s_ha_dum
quelle
3
@ Anfänger: Wenn dies das Problem gelöst hat, markieren Sie es bitte als "Akzeptiert". Achten Sie auf das Häkchen neben den Abstimmungspfeilen links.
s_ha_dum
8

Dafür gibt es zwei Möglichkeiten:

  1. Abfangen der Hauptabfrage am 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. Fügen Sie eine zusätzliche Abfrage hinzu

    $second_loop = get_posts( array(
        'meta_key'   => 'cp_annonceur',
        'meta_value' => 'professionnel',
    ) );
Kaiser
quelle
2
Schön, den kurzen Weg mit get_posts () zu kennen
Andrew Welch
8

Ich habe benutzerdefinierte Auswahl verwendet (möglicherweise bessere Leistung)

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

Inspiriert von https://tommcfarlin.com/get-post-id-by-meta-value/

michalzuber
quelle
1
Es hat zwar bessere Leistungen, aber die Idee, Wordpress-Funktionen zum Durchsuchen (und Zwischenspeichern) von Daten zu haben, ist damit hinfällig. Und was passiert, wenn WP beschließt, die Tabellenstruktur zu ändern? :)
Erenor Paz
2

Wir können das gewünschte Ergebnis mit der Meta-Abfrage von WordPress erhalten:

// 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 );

Weitere Informationen zu Meta-Abfragen finden Sie in diesem Blog: http://www.codecanal.com/get-posts-meta-values/

Jitendra Damor
quelle
Darf ich wissen, warum dieser post_per_pageWert -1 ist?
Abhay Gawade
1
@AbhayGawade Mit diesem Parameter können Sie die maximale Anzahl der Ergebnisse begrenzen. -1 bedeutet keine Begrenzung.
Kush