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 .

porton
sumber
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.

Stephen Harris
sumber
@TahirYasin - melihat naskah kuno .
Stephen Harris
1

Anda dapat memfilter kiriman berdasarkan pada nilai meta dan menampilkan kiriman di halaman cms.

'meta_query' => array(
        array(
            'key'     => 'front_page',
            'value'   => 'yes',
            'compare' => 'LIKE',
        ))

silakan merujuk tutorial untuk penjelasan langkah demi langkah

http://www.pearlbells.co.uk/filter-posts-custom-fields-wp_query/

Liz Eipe C
sumber