Kueri templat halaman dengan WP_Query

14

Saya hanya ingin menanyakan halaman dengan templat halaman tertentu WP_Queryatau fungsi yang akan mengembalikan objek posting, tetapi saya tidak dapat menemukan informasi tentang itu di kodeks resmi.

Alexandre Kirszenberg
sumber

Jawaban:

23

Coba ini ... Dengan asumsi nama templat adalah 'my_template.php',

$query = new WP_Query(
    array(
        'post_type' => 'page',
        'meta_key' => '_wp_page_template',
        'meta_value' => 'my_template.php'
    )
);
//Down goes the loop...

Anda juga dapat menggunakan get_posts , atau mengubah posting kueri untuk menyelesaikan pekerjaan. Kedua fungsi ini menggunakan parameter yang sama dengan WP_Query .

Rutwick Gangurde
sumber
20

Salah: pada wordpress 3 Anda memerlukan sesuatu yang mirip dengan:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);
BenJam
sumber
TERIMA KASIH!! Membaca halaman ini terlalu cepat, menggunakan jawaban yang diterima. Ini berhasil. Untuk orang lain, perhatikan array di dalam array di dalam array ...
Jeremy Carlson
3
Satu-satunya perbedaan di sini adalah post_type. Kalau tidak, Anda tidak perlu meta_queryarray untuk satu pasangan kunci / nilai kustom.
Rutwick Gangurde
Tentu saja permintaan meta diperlukan. Kecuali itu bisa "inline" dengan meta_keydan meta_valueatau dengan array biasa, yang dapat mencakup beberapa kondisi.
Maxime Culea
0

Jika ada upaya yang salah menghasilkan nol posting, mungkin nama template salah. Saya mencoba nama file php dan nama templat saya dan ternyata tidak berhasil. Kemudian saya memutuskan untuk memeriksa kotak pilih templat di mana kita memilih templat pada editor halaman. Aku menemukan ini:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

Saya menggunakan templates-map/component-tutorial-1.phpdan itu berhasil.

Ivan Gomes
sumber
0

Jika Anda memiliki templat di dalam folder lain:

$args = array(
    'post_type' => 'page', //it is a Page right?
    'post_status' => 'publish',   
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
        )
    )
);
Guille Holmann
sumber