Chcę wiedzieć, czy można uzyskać identyfikator strony z określonym szablonem. Czy to możliwe, aby uzyskać identyfikator strony przypisanej do „page-special.php”?
19
Po utworzeniu strony przypisany szablon do tej strony jest zapisywany jako niestandardowy meta post w taki sam sposób, jak pola niestandardowe. meta_key
Jest _wp_page_template
i meta_value
będzie szablon strona
Możesz po prostu użyć get_pages
do pobrania wszystkich stron, które mają meta_value
określony szablon
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Jeśli potrzebujesz tylko identyfikatorów stron, skorzystaj z, get_posts
a następnie po prostu przekaż wartość page
jako post_type
i „ as
pola identyfikatora” . Zapewni to znacznie szybsze i bardziej zoptymalizowane zapytanie, ponieważ zwracamy tylko kolumnę id id w db, a nie wszystkie z nich dla podanych stron
( Wymaga 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 ), jeśli nie chcesz zbytnio przesyłać zapytań do bazy danych.Jeśli szablon strony znajduje się w podfolderze, theme-folder / page-templates / page-template.php, poniższe zapytanie zadziała:
Powyższe kody wyświetlają również podstrony.
Dzięki
źródło
Poniżej znajduje się nieco bardziej wyartykułowany skrypt, który w razie potrzeby uwzględnia język. UWAGA: zakłada użycie Polylang, a nie WPML.
źródło
Oto pełna funkcja, która działa z WPML i Polylang. Kredyt na https://github.com/cyrale/
źródło