Lọc bài viết bằng dữ liệu meta bài


8

Tôi muốn lọc các bài đăng theo cách mà chỉ các bài đăng, mà get_post_meta($post->ID, "project_cat", true)(nó trả về ID bài đăng) bằng với giá trị được chỉ định của tôi, được hiển thị.

Bất kỳ cách nào để làm điều này?

Tôi đặc biệt quan tâm đến các cách để làm nó tương thích với plugin WP-Paginate .


56% là khá thấp - vui lòng nhớ quay lại câu hỏi cũ của bạn và chấp nhận câu trả lời đúng. Nó đưa họ ra khỏi đống 'chưa được trả lời' và giúp người khác tìm giải pháp dễ dàng hơn. Mọi người cũng sẽ sẵn sàng đưa ra câu trả lời nếu họ biết rằng OP sẽ trả lời họ. :)
Stephen Harris

Xem câu trả lời của tôi dưới đây. Không rõ khi nào / nơi bạn muốn lọc bài viết. Nếu bạn cập nhật câu trả lời của mình để bao gồm điều này, tôi có thể đề xuất 'điều kiện' nào bạn cần kiểm tra. Hoặc, xem ví dụ query_post được liên kết. Nguyên tắc chung là như nhau - thiết lập meta_querygiá trị.
Stephen Harris

Câu trả lời:


11

Đối WP_Querytượng chấp nhận một đối số meta bài. Nói chung, bạn muốn làm như sau:

  $my_query = new WP_Query( 
    array(
      'post_type' => 'post',
      'meta_query' => array(
        array(
          'key' => 'project_cat',
          'value' => 'my-value',
        )
      ),

        // Other query properties
    ) 
  );

Trong đó 'giá trị của tôi' là 'giá trị được chỉ định' của bạn.

Ví dụ sử dụng:

  add_action( 'pre_get_posts' , 'my_pre_get_posts' );

  function my_pre_get_posts( $query ) {

    // Check this is main query and other conditionals as needed
    if( $query->is_main_query() ) {
        $query->set( 
          'meta_query', 
          array( 
            array(
              'key' => 'project_cat',
              'value' => 'my-value'
            )
          )
        );
    }

  }

Xem WP_Query , pre_get_posts . Tất cả các điều kiện có sẵn cho bạn. Hiện tại điều này chạy trên mọi truy vấn chính - mà bạn có thể không muốn.

Ngoài ra, bạn có thể sử dụng query_posts(một cách đơn giản hơn nhưng hiệu quả hơn nhiều) để thay đổi truy vấn chỉ một trường hợp cụ thể trong một mẫu.


@TahirYasin - xem codex .
Stephen Harris

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.