WP_Query ile sayfa şablonu sorgusu


14

Ben sadece belirli bir sayfa şablonu ile WP_Queryveya posta nesnesini döndürecek bir işlevi olan sayfaları sorgulamak istiyorum , ancak resmi kodeksi bu konuda herhangi bir bilgi bulamıyorum.

Yanıtlar:


23

Şunu deneyin ... Şablon adının 'my_template.php' olduğunu varsayarsak,

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

Ayrıca işi yapmak için get_posts komutunu kullanabilir veya sorgu yayınlarını değiştirebilirsiniz . Her iki işlev de WP_Query ile aynı parametreleri kullanır .


20

Yanlış: wordpress 3'ten itibaren aşağıdakine benzer bir şeye ihtiyacınız var:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

TEŞEKKÜR EDERİM!! Bu sayfayı çok hızlı bir şekilde gözden kaçırdı, kabul edilen cevabı kullandı. Bunu yapar. Herkes için, dizinin içindeki dizinin içindeki diziyi not edin ...
Jeremy Carlson

3
Buradaki tek fark post_type. Aksi takdirde, meta_querytek bir özel anahtar / değer çifti için diziye ihtiyacınız yoktur .
Rutwick Gangurde

Tabii ki meta sorgu gereklidir. Bu birlikte "satır içi" olabilir hariç meta_keyve meta_valueveya birden çok koşulları içerebilir düz bir dizi ile.
Maxime Culea


0

Herhangi birinin girişimi yanlış sıfır yazı ile sonuçlanırsa, şablon adı yanlış olabilir. Ben php dosya adı ve benim şablon adı denedim ve işe yaramadı. Sonra, sayfa düzenleyicide şablonu seçtiğimiz şablon seçme kutusunu incelemeye karar verdim. Bunu buldum:

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

Kullandım templates-map/component-tutorial-1.phpve işe yaradı.


0

Şablona başka bir klasörün içinde sahipseniz:

$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
        )
    )
);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.