รับโพสต์ตามค่าเมตา


27

ผมอยากจะโพสต์รายการทั้งหมดที่มีสำคัญของมีค่าcp_annonceurprofessionnel


8
โปรดทราบว่าคุณคาดว่าจะทำการวิจัยปัญหาและพยายามแก้ไขก่อนโพสต์คำถาม หากคุณไม่ได้เป็นแบรนด์ใหม่ที่นี่ฉันอาจจะลงคะแนนให้คำถามและย้ายไปที่แทนที่จะตอบมัน ในจิตวิญญาณของ "ยินดีต้อนรับสู่กอง" นี่คือผึ้งฟรีของคุณ โปรดดูวิธีถามคำถามในอนาคต
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
@ ผู้เริ่มต้น: หากสิ่งนี้แก้ปัญหาได้โปรดทำเครื่องหมายว่า "ยอมรับ" มองหาเครื่องหมายถูกใกล้ลูกศรโหวตทางด้านซ้าย
s_ha_dum

8

มีสองวิธีในการทำเช่นนี้:

  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 ()
Andrew Welch

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 ตัดสินใจเปลี่ยนโครงสร้างตาราง :)
Erenor Paz

2

เราสามารถรับผลลัพธ์ที่ต้องการได้ด้วยการสืบค้น Meta ของ WordPress:

// 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?
Abhay Gawade

1
@AbhayGawade คุณสามารถ จำกัด จำนวนผลลัพธ์สูงสุดโดยใช้พารามิเตอร์นั้น -1 หมายถึงไม่ จำกัด
Kush
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.