WordPress Seiten-ID anhand des Titels herausfinden
Bei der Erstellung von WordPress-Themes kommt es hier und da vor, dass z. B. für die Ermittlung eines Permalinks einer Seite die ID herausgefunden werden muss, wenn man nur den Titel zur Verfügung hat. Mit get_page_by_title() ist das ganz einfach zu lösen.
get_page_by_title() anwenden
Die Funktion kann wie folgt angewendet werden:
<?php get_page_by_title( $page_title, $output ) ?>
get_page_by_title() lässt zwei Parameter zu. Der erste dieser Parameter ist auf jeden Fall erforderlich. Dort wird der Titel der Seite als String angegeben, deren ID ich herausfinden möchte:
<?php get_page_by_title( 'Meine Seite' ) ?>
Optional kann man der Funktion einen zweiten Parameter mit auf den Weg geben. Dort lässt sich die Ausgabe der Funktion bestimmen. Standardmäßig liefert das obige Beispiel den Datensatz der Seite mit dem entsprechenden Titel als Objekt.
Ausgabe als Objekt
Die ID der Seite mit dem Titel Meine Seite könnte also wie folgt ausgegeben werden:
<?php
$seite = get_page_by_title( 'Meine Seite' );
echo $seite->ID;
?>
Ausgabe als numerischer Array
Eine weitere Möglichkeit ist die Ausgabe der Funktion als numerischer Array. Die ID der Seite mit dem Titel Meine Seite könnte damit wie folgt ausgegeben werden:
<?php
$seite = get_page_by_title( 'Meine Seite', ARRAY_N );
echo $seite[0];
?>
Ausgabe als assoziativer Array
Die letzte Möglichkeit für den zweiten Parameter ist der assoziative Array. Die ID der Seite mit dem Titel Meine Seite würde dann wie folgt ausgegeben werden:
<?php
$seite = get_page_by_title( 'Meine Seite', ARRAY_A );
echo $seite['ID'];
?>
Tabelle wp_posts
Natürlich lassen sich mit der Funktion get_page_by_title() auch andere Daten ausgeben. Besonders mit der Ausgabe als Objekt oder assoziativem Array ist es relativ leicht, darauf zuzugreifen. Eine Übersicht der zur Verfügung stehenden Daten kann im WordPress-Codex eingesehen werden.
Man könnte sich zum Beispiel die Anzahl der Kommentare damit wie folgt ausgeben lassen:
<?php
$seite = get_page_by_title( 'Meine Seite' );
echo $seite->comment_count;
?>
Neue Funktion get_page_id()
Wenn man die Funktion häufig und nicht den ganzen Datensatz sondern wirklich nur die ID benötigt und sich das Ganze noch einfacher machen möchte, kann man sich optional eine kleine Funktion schreiben und diese in der functions.php des Themes ablegen.
<?php
function get_page_id($page_name){
$page = get_page_by_title($page_name);
return $page->ID;
}
?>
Ich beschränke mit mit der Funktion auf einen Parameter (Titel der Seite) und verwende die Standardausgabe Objekt.
Diese Funktion verwende ich häufig in Verbindung mit Theme-Optionen, wo der Benutzer z. B. eine Seite aus einem Select-Dropdown auswählen kann, um optional einen Link unter einem Willkommenstext zu setzen. Dabei wird mir der Titel der Seite zurückgegeben.
Die ID erhalte ich mit der neuen Funktion get_page_id():
<?php
$seiten_id = get_page_id( 'Meine Seite' );
?>
Um zum Beispiel einen Link mit einem Seitentitel zu generieren, kann ich meine neue Funktion in Kombination mit get_permalink() verwenden:
<a href="<?php echo get_permalink(get_page_id( 'Meine Seite' )); ?>">
Meine Seite
</a>
Fazit
Man kann also mit WordPress-Boardmitteln und einer kleinen optionalen Erweiterung die ID einer Seite anhand ihres Titels sehr leicht herausfinden.
Relevante Links
- WordPress Codex:
get_page_by_title - WordPress Codex: Table – wp_posts
- WordPress Codex:
get_permalink()
9 Kommentare
1 Trackback
- Der Link zum Impressum – Koffeinbetriebenes.Net - [...] Webdemar.de habe ich eine Lösung gefunden, die den genannten Anforderung am besten gerecht wird. Über get_page_by_title() wird [...]


3. November 2009
danke für den tipp
3. November 2009
Hi Simon,
gutes Tutorial. Sinnvoll wäre es jetzt noch, ganz konkrete Beispiele für die Verwendung aufzuzeigen.
3. November 2009
Da hast Du vielleicht Recht. Ich wollte den Artikel aber auch nicht überladen. Mit der Nutzung von
get_permalink()ist ein solches Beispiel gegeben.3. November 2009
Sicher, für get_permalink() brauchst Du die Seiten-ID, aber was ich dann heraus bekomme ist doch nur der “Input”, den Du brauchst, um get_page_by_title() zu benutzen …
Mir fehlt auch eine Idee, wozu die Funktion überhaupt einsetzbar wäre. Außer vielleicht im Bereich “Wordpress-eigenen Short-Links”, aber die ID steht ja innerhalb von “the Loop” eh bereit… ?
3. November 2009
Die Funktion
get_page_idist ein nützliches Helferlein… mehr nicht. Im Zusammenhang mit Theme-Optionen, Shortcodes und Widgets hat sie mir oft gute Dienste geleistet. Wenn Du nicht weißt, wofür Du die Funktion brauchen könntest, benötigst Du sie auch nicht9. November 2009
hab mich gerade gefragt, warum dein beispiel nicht läuft, da fehlt ein ‘echo’ vor ‘get_permalink’. ansonsten gute sache, natürlich. kann ich gerade gut gebrauchen. danke.
9. November 2009
Danke Steffen! Ist berichtigt.
13. November 2009
ein super tutorial,danke,gute job
14. November 2009
Danke für diesen tollen Tipp. Diese Woche stand ich gerade vor diesem Problem. Habe mich dann durch die Datenbank gewurschtelt, um die IDs rauszufinden. Aber so gehts natürlich einfacher