WordPress Funktionen

WordPress Seiten-ID anhand des Titels herausfinden
3. November 2009

WordPress Seiten-ID anhand des Titels herausfinden

von Simon [webdemar] - 11 Kommentare

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

,

Simon [webdemar]

Moin, ich bin Simon und betreibe webdemar.com als meine ernstgemeinte Spielwiese für WordPress, Webdesign und so.

RSS abonnieren Twitter

9 Kommentare

  1. Markus - 3. November 2009 Antworten

    danke für den tipp :)

  2. Michael Oeser - 3. November 2009 Antworten

    Hi Simon,

    gutes Tutorial. Sinnvoll wäre es jetzt noch, ganz konkrete Beispiele für die Verwendung aufzuzeigen.

    • Simon [webdemar] - 3. November 2009 Antworten

      Da hast Du vielleicht Recht. Ich wollte den Artikel aber auch nicht überladen. Mit der Nutzung von get_permalink() ist ein solches Beispiel gegeben.

      • Stephan - 3. November 2009 Antworten

        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… ?

        • Simon [webdemar] - 3. November 2009 Antworten

          Die Funktion get_page_id ist 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 nicht ;-)

  3. steffen - 9. November 2009 Antworten

    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.

  4. bukmacher - 13. November 2009 Antworten

    ein super tutorial,danke,gute job

  5. Barbara - 14. November 2009 Antworten

    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 :)

2 Trackbacks

Deine Meinung

WordPress.org

© 2009-2010 webdemar.com - Professionelle WordPress Themes