Aku ingin tahu apakah itu mungkin untuk mendapatkan ID dari halaman dengan template tertentu. Apakah ini mungkin untuk mendapatkan ID dari halaman yang ditugaskan untuk "halaman-special.php"?
19
Ketika halaman yang dibuat, template ditugaskan ke halaman yang disimpan sebagai pos kustom meta dengan cara yang sama seperti bidang adat. The meta_key
adalah _wp_page_template
dan meta_value
akan menjadi template halaman
Anda hanya dapat menggunakan get_pages
untuk mengambil semua halaman yang memiliki meta_value
template yang ditentukan
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Jika salah satu hanya perlu halaman id, maka Anda memanfaatkan get_posts
dan kemudian hanya lulus page
sebagai post_type
dan 'ids as
nilai fields`. Ini akan memastikan kueri yang jauh lebih cepat, lebih dioptimalkan karena kami hanya akan mengembalikan kolom id pos di db dan tidak semuanya untuk halaman yang diberikan
( Membutuhkan PHP 5.4+ )
$args = [
'post_type' => 'page',
'fields' => 'ids',
'nopaging' => true,
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
];
$pages = get_posts( $args );
foreach ( $pages as $page )
echo $page . '</br>';
set_transient
( codex.wordpress.org/Transients_API ) jika Anda tidak ingin terlalu banyak query database.Jika template halaman Anda berada di dalam sub-folder, theme-folder / page-templates / page-template.php maka pertanyaan Anda di bawah ini akan berfungsi:
Kode-kode di atas juga menampilkan sub-halaman.
Terima kasih
sumber
Berikut ini adalah skrip yang sedikit lebih diartikulasikan yang memperhitungkan bahasa, jika diperlukan. Perhatikan bahwa ini mengasumsikan penggunaan Polylang, bukan WPML.
sumber
Ini adalah fungsi lengkap yang bekerja dengan WPML dan Polylang. Kredit untuk https://github.com/cyrale/
sumber