Nhận bài viết theo giá trị meta


27

Tôi muốn liệt kê tất cả các bài viết có khóa cp_annonceurvới giá trị professionnel.


8
Xin lưu ý rằng bạn sẽ nghiên cứu vấn đề và cố gắng giải quyết nó trước khi đăng câu hỏi. Nếu bạn không phải là người mới ở đây, tôi có lẽ đã bỏ phiếu cho câu hỏi và tiếp tục, thay vì trả lời nó. Theo tinh thần "Chào mừng đến với ngăn xếp", đây là con ong tự do của bạn. Xin hãy xem Làm thế nào để hỏi cho câu hỏi trong tương lai.
s_ha_dum

Điều này chỉ khiến tôi mất một thời gian vì câu trả lời không được chấp nhận dưới đây. Vì vậy, tôi đang rời khỏi đây 2 xu của tôi. Anh không bao giờ trả lời, cũng không chấp nhận câu trả lời dưới đây. Tại sao bạn không xóa câu hỏi này trong khi có hàng tá câu hỏi tương tự ở đây?
mircobabini

Câu trả lời:


47

Những gì bạn đang yêu cầu là một meta_query

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

Tất cả thông tin bạn cần đều có trong Codex .


3
@Beginner: nếu điều này giải quyết được vấn đề, vui lòng đánh dấu là "Đã chấp nhận". Tìm kiếm dấu kiểm gần mũi tên bỏ phiếu bên trái.
s_ha_dum

8

Có hai cách để làm điều đó:

  1. Chặn truy vấn chính trên 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. Thêm một truy vấn bổ sung

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

2
Rất vui được biết con đường ngắn với get_posts ()
Andrew Welch

8

Tôi đã sử dụng tùy chọn chọn (có thể là hiệu suất tốt hơn)

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

Lấy cảm hứng từ https://tommcfarlin.com/get-post-id-by-meta-value/


1
Nó có thể có hiệu suất tốt hơn, nhưng nó loại bỏ toàn bộ ý tưởng có chức năng Wordpress để tìm kiếm (và bộ đệm) dữ liệu. Và, ngoài ra, điều gì sẽ xảy ra nếu WP quyết định thay đổi cấu trúc bảng? :)
Erenor Paz ngày

2

Chúng tôi có thể nhận được kết quả mong muốn với truy vấn Meta của 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 );

Để biết hướng dẫn chi tiết hơn về truy vấn meta, hãy theo dõi blog này: http://www.codecanal.com/get-posts-meta-values/


Tôi có thể biết tại sao post_per_pagegiá trị này là -1 không?
Abhay Gawade

1
@AbhayGawade Bạn có thể giới hạn số lượng kết quả tối đa bằng cách sử dụng tham số đó, -1 có nghĩa là không giới hạn.
Kush
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.