Yayınları meta değerine göre al


27

cp_annonceurDeğeri olan bir anahtarı olan tüm gönderileri listelemek istiyorum professionnel.


8
Lütfen , sorunu araştırmanız ve bir soru göndermeden önce sorunu çözme girişiminde bulunmanız beklendiğini unutmayın. Burada yepyeni olmasaydınız, muhtemelen soruyu aşağı oylardı ve cevaplamak yerine devam ederdim. "Yığına Hoşgeldiniz" ruhunda bu senin serbest arın. Bir göz atın lütfen sor nasıl gelecek sorular için.
s_ha_dum

Bu, aşağıda kabul edilmeyen cevap nedeniyle biraz zaman kaybetmeme neden oldu. Bu yüzden buradan 2 kuruş bırakıyorum. Asla cevap vermedi, aşağıdaki cevabı da kabul etmedi. Etrafta onlarca benzer soru varken neden bu soruları kaldırmıyorsun?
mircobabini

Yanıtlar:


47

İstediğiniz şey bir meta_query

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

İhtiyacınız olan tüm bilgiler Codex'te .


3
@Binner: Eğer bu sorunu çözerse, lütfen "Kabul Edildi" olarak işaretleyin. Soldaki oy oklarının yanında bulunan onay işaretini arayın.
s_ha_dum

8

Bunu yapmanın iki yolu vardır:

  1. Ana sorguyu şu konumda kes 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. Ek bir sorgu ekle

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

2
Get_posts () ile kısa yolu bilmek güzel
Andrew Welch

8

Özel seçim kullandım (daha iyi performans olabilir)

$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/ adresinden ilham alındı.


1
Daha iyi performans gösterebilir, ancak veri aramak (ve önbellek) için Wordpress işlevlerine sahip olmak fikrini ortadan kaldırır. Ayrıca WP masa yapısını değiştirmeye karar verirse ne olacak? :)
Erenor Paz

2

İstenilen sonucu WordPress'in Meta sorgusu ile bulabiliriz:

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

Meta sorgulama ile ilgili daha ayrıntılı bir rehber için bu blogu izleyin: http://www.codecanal.com/get-posts-meta-values/


Bu post_per_pagedeğerin neden -1 olduğunu biliyor muyum?
Abhay Gawade

1
@AbhayGawade Bu parametreyi kullanarak maksimum sonuç sayısını sınırlayabilirsiniz, -1 limitsiz demektir.
Kush
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.