Ich möchte wissen, ob es möglich ist, die ID einer Seite mit einer bestimmten Vorlage abzurufen. Ist es möglich, die ID einer Seite zu ermitteln, die "page-special.php" zugewiesen wurde?
19
Beim Erstellen einer Seite wird die dieser Seite zugewiesene Vorlage wie benutzerdefinierte Felder als benutzerdefiniertes Post-Meta gespeichert. Das meta_key
ist _wp_page_template
und das meta_value
wird die Seitenvorlage sein
Sie können einfach verwenden get_pages
, um alle Seiten abzurufen, die eine meta_value
der angegebenen Vorlagen haben
$pages = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'page-special.php'
));
foreach($pages as $page){
echo $page->ID.'<br />';
}
Wenn man nur die Seiten-IDs benötigt, verwendet man den Wert und übergibt ihn get_posts
einfach page
als post_type
und "IDs- as
Felder". Dies stellt eine viel schnellere und optimierte Abfrage sicher, da nur die Post-ID-Spalte in der Datenbank und nicht alle für die angegebenen Seiten zurückgegeben werden
( Benötigt 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 ) verwenden, wenn Sie die Datenbank nicht zu häufig abfragen möchten.Befindet sich Ihre Seitenvorlage im Unterordner theme-folder / page-templates / page-template.php, funktioniert die folgende Abfrage:
Diese obigen Codes zeigen auch Unterseiten an.
Vielen Dank
quelle
Das Folgende ist ein etwas artikulierteres Skript, das bei Bedarf eine Sprache berücksichtigt. HINWEIS: Es wird die Verwendung von Polylang und nicht von WPML vorausgesetzt.
quelle
Hier ist eine vollständige Funktion, die mit WPML und Polylang funktioniert. Gutschrift auf https://github.com/cyrale/
quelle