Memfilter posting berdasarkan data meta posting


8

Saya ingin memfilter posting sedemikian rupa sehingga hanya posting, yang get_post_meta($post->ID, "project_cat", true)(yang mengembalikan ID posting) sama dengan nilai yang saya tentukan, ditampilkan.

Adakah cara untuk melakukan ini?

Saya terutama tertarik pada cara untuk melakukannya kompatibel dengan plugin WP-Paginate .


56% cukup rendah - harap ingat untuk kembali ke pertanyaan lama Anda dan menerima jawaban yang benar. Ini menghilangkan mereka dari tumpukan 'tidak terjawab' dan membantu orang lain menemukan solusi dengan lebih mudah. Orang juga akan lebih bersedia untuk memberikan jawaban jika mereka tahu bahwa OP akan menanggapi mereka. :)
Stephen Harris

Lihat jawaban saya di bawah ini. Tidak jelas kapan / di mana Anda ingin menyaring posting. Jika Anda memperbarui jawaban Anda untuk memasukkan ini, saya dapat menyarankan 'persyaratan' mana yang perlu Anda periksa. Atau, lihat contoh query_post yang ditautkan. Prinsip umum adalah sama - menetapkan meta_querynilainya.
Stephen Harris

Jawaban:


11

The WP_Queryobjek menerima meta argumen posting. Secara umum Anda ingin melakukan hal berikut:

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

        // Other query properties
    ) 
  );

Di mana 'nilai saya' adalah 'nilai yang ditentukan' Anda.

Contoh penggunaan:

  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'
            )
          )
        );
    }

  }

Lihat WP_Query , pre_get_posts . Semua persyaratan tersedia untuk Anda. Saat ini ini berjalan pada setiap permintaan utama - yang mungkin tidak Anda inginkan.

Atau Anda dapat menggunakan query_posts(cara yang lebih sederhana, tetapi jauh lebih efisien) untuk mengubah kueri hanya untuk contoh spesifik dalam templat.


@TahirYasin - melihat naskah kuno .
Stephen Harris

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.