Title einer Seite mit php herausbekommen

  • Hallo,

    wie kann man den Titel einer Seite (oder seine ID und darüber den Titel)
    mit php herauszubekommen.

    Ich habe schon Einiges probiert, z.B.:

    Code
    $currId = get_the_ID();

    aber das funktioniert nur bei statischen Seiten, die keine posts einthalten.
    (ansonsten bekomme ich damit die ID eines posts auch außerhalb
    der Loop)


    Oder das:

    Code
    wp_title( '|', true, 'right' )

    Da bekomme ich nur einen leeren String.


    Code
    global $post;
    $post->ID


    Das gibt auch die ID eines posts (wenn es zumindest einen post gibt auf der Seite).

    Das hier (auch aus einem Forum):

    Code
    if(is_page())
    {
         global $post;
    
    
         echo 'page ID: '.$post->ID;
    }

    gibt die ID der Seite, wenn is_page() true ergibt,
    ich brauche dann aber immer noch die ID, wenn is_page()
    nicht true ergibt (was auch vorkommt, anscheinend dann,
    wenn die Seite posts enthält).
    Das hier habe ich auch noch gefunden:

    Code
    $page_object = get_queried_object();  
    $page_id     = get_queried_object_id();

    Das bringt in beiden Fällen 0.


    Die Frage also: welche Funktion in Wordpress liefert
    tatsächlich den Title einer Seite zurück,
    unabhängig davon, ob die Seite posts enthält oder nicht?


    Danke für Hilfe!

    Wordpress-Version 3.81

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • du musst natürlich bei zb get_the_Id beachten das du innerhalb loop abfragst, sonst bekommst du nicht gewünschtes ergebniss besondern wenn du auf der Beitragsseite oder zb in Archiv bist.
    wp_title ansich das selbe.

    also musst du entscheiden wann du den titel wie abfragen willst und ob du dann schlüssiges ergebnis bekommst.
    aber das weißt du warscheinlich laut Codex, und daran kannst du auch nichts ändern, wäre aber auch unlogisch

    und get_queried_object bringt dir ein Object zurück und keine Variable.
    siehe Codex

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Bei wp_title war es mir nicht klar.
    Ich möchte eine Funktion natürlich aussserhalb der loop abfragen, weil
    ich ja für beide Fälle (Seiten mit und ohne posts) eine page-ID kriegen will.

    Ich habe jetzt auch noch das probiert:
    echo "single-post-title: " . single_post_title() . "<br/>";

    ebenfalls leeres Ergebnis (außerhaln der loop).

    Einmal editiert, zuletzt von letMeWP (27. April 2014 um 13:55)

  • wäre zu hinterfragen, für welchen zweck suchst du Page ID und was machst du wenn du mehrer Posts auf einer ausgabeseite hast welche ID willst du dann, oder alle.
    festellen welche IDs auf einer Seite im Loop sind, kann man mit einer Query lösen, so wie es Sidebarwidget usw machen, natürlich mit bedacht, mti welchen Filter man zum ergebnis kommt, bzw was macht man wenn mehrer posts auf einer Seite sind, natürlich technisch lösbar.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Eins ist vielleicht noch wichtig:
    es handelt sich bei meinen Seiten teils um welche, die
    custom post types enthalten.

    Code
    if(is_page()) {
            global $post;
            echo 'post ID: '.$post->ID . "<br/>";
        } else {    
            global $post;
            echo "!is page POST: " . $post->post_title . " type " .  $post->post_type . "<br/>";
            $parent_title = get_the_title($post->post_parent);
            $parent_type =  get_post_type($post->post_parent);
            echo "parent title: ". $parent_title.  " type: " . $parent_type . "<br/>";
        }

    Das Ergebnis ist interessant:
    Die custom post types geben sich selbst als parent zurück!
    Ich komme dort also nicht an die page als parent (was ja das Problem sonst auch lösen könnte).

    Was mir dabei auch nicht ganz klar ist
    ( da ich diese Formulerung

    Code
    global $post;


    auch einfach aus einem Forum übernommen habe:

    ich kriege da schon einen $post zurück, der etwas enthält,
    auch außerhalb der loop.

  • Zu Deiner Frage, Shadow:

    ich will ein eigenes Menü basteln, das einfach die Seite, die gerade aktiv ist,
    anders darstellt. Ich brauche also nicht die IDs der Posts, sondern die der
    übergeordneten, die Posts enthaltenen Seite.


    Daher will ich dann auch nicht die loop durchlaufen (die einzelne posts
    brauche ich nicht und einige Seiten enthalten auch gar keine).

  • Das hier scheint zu funktionieren,
    geht allerdings den Umweg über die Request-Uri:

    Code
    function extract_page_id($link) {
      preg_match('#page_id=([0-9]+)#', $link, $matches);
      return $matches[1]; 
    }
    
    
    $currUri = $_SERVER["REQUEST_URI"];
    echo extract_page_id($currUri)
  • du fragst irgendwo die ID ab, auf einer Ausgabenseite (nicht page oder post) ist zb eine Post im Content (ansich nur eine ID) in der Sidebar gibt es anzeigen wie letzte Artikel, Archiv, im Menü werden ebenfalls seitentitel aufgelistet, und jedes widget/menü ist ansich wiederum ein loop, also ist es fast zufall das du die richtige ID bekommst,

    und deine IDee die Ausgabe zu verändern, lösst man mit Templates bzw dessen structur.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!