Ben sadece belirli bir sayfa şablonu ile WP_Query
veya posta nesnesini döndürecek bir işlevi olan sayfaları sorgulamak istiyorum , ancak resmi kodeksi bu konuda herhangi bir bilgi bulamıyorum.
Ben sadece belirli bir sayfa şablonu ile WP_Query
veya posta nesnesini döndürecek bir işlevi olan sayfaları sorgulamak istiyorum , ancak resmi kodeksi bu konuda herhangi bir bilgi bulamıyorum.
Yanıtlar:
Ş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 .
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'
)
)
);
post_type
. Aksi takdirde, meta_query
tek bir özel anahtar / değer çifti için diziye ihtiyacınız yoktur .
meta_key
ve meta_value
veya birden çok koşulları içerebilir düz bir dizi ile.
Sayfa şablonu, "_wp_page_template" anahtarıyla bir meta değeri olarak saklanır.
Tek ihtiyacınız olan bu anahtarı bir meta sorgu parametresinde kullanmak. Örneğin
ve http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
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.php
ve işe yaradı.
Ş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
)
)
);