Link zur neuesten Subpage

  • Liebes Forum,

    ich möchte gerne in meinem Hauptmenü einen Link zur neuesten subpage einer bestimmten Seite haben. Ich benutze Pages anstelle von Posts um die Seite auf der man sich gerade befindet in der Navigation kenntlich machen zu können.

    Ich habe schon ein wenig im englischsprachigen Wordpress-Forum gesucht und bin auf diesen Code gestossen:

    Leider funktioniert das bei meiner Seite nicht. Ich habe den Code in die functions.php meines Templates eingefügt und rufe im Code vom Menü die Funktion "latest_page" auf.

    PHP
    <?php latest_page('12'); ?>

    Es passiert aber nichts. Da ich den Code nicht wirklich durchschaue bin ich so ein bisschen mit meinem Latein am Ende.

    (Ich experimentiere offline mit neuester Wordpress-Version 2.3.2)

    • 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

  • Zitat

    Es passiert aber nichts.

    Definiere das mal ein bisschen genauer bitte. ;-)
    Heißt das, die Funktion gibt nichts zurück? So wie sie aufgebaut ist, sollte das ja eigentlich nicht der Fall sein. Es müsste immer mindestens die URL Deines Blogs ausgegeben werden.

    Was Du prüfen könntest: Mal spaßeshalber die per SELECT geholte ID ausgeben lassen mit echo. Sicherstellen, dass die Funktion zu Deiner Permalink-Struktur passt (http://www.dein-blog.de/post-titel).

  • Hey Ammelatu!

    Vielen Dank für Deine Reaktion! Sorry, dass ich so spät reagiere. Ich hatte den RSS-Feed vom Forum abonniert in der irrigen Annahme, dass auch Antworten zu meiner Frage in meinem Reader auftauchen... Pustekuchen.

    Folgendes wird ausgespuckt:

    Code
    http://www.meineseite.com/wordpress//http://www.meineseite.com/wordpress//

    Installationsverzeichnis und Blog-Adresse ist

    Code
    http://www.meineseite.com/wordpress/
  • OK, ich habs aufgelöst. Dummer Fehler. Wirklich dumm.

    So wie beschrieben im ersten Post funktioniert alles. Ich hatte bloss eine alte Version von der functions.php in meinem template-Verzeichnis.

    Sorry & Danke

  • Nur damit ich verstehe, was Du erreichen willst: In Deinem oben geposteten Beispiel ist '12' die ID dieser neuesten Subpage, welche Du verlinken möchtest?

    In dem Fall müsstest Du ja die ID immer dann neu eintragen, wenn sich der Link ändern soll. Da kannst Du im Prinzip genauso gut den festen Link ins PHP-File schreiben. Das hätte höchstens den Nachteil, dass Änderungen am Permalink nicht berücksichtigt würden. Aber die Permalinks soll man ja eigentlich eh nicht ändern.

    Davon abgesehen fehlt in dem geposteten Quellcode meiner Meinung nach ein "else". Etwa so, denke ich:

    Code
    if ( $page->post_parent == $page->ID ) {
            echo get_settings('home').'/'.$uri.'/';
    } else {
        while ($page->post_parent != 0) {
            $page = get_page($page->post_parent);
            $uri = urldecode($page->post_name) . "/" . $uri;
        }
        echo get_settings('home').'/'.$uri.'/';
    }

    Daher kommt die doppelte Ausgabe, würde ich sagen.

    Und dann wird ja auch der Seitenname (also, der/die/das Slug in Dem Fall) nicht ausgegeben. Weiß ich gerade auch nicht, woran das liegt.

    Ach ja, obiger Code verlässt sich natürlich auch darauf, dass Du die Permalinkstruktur %postname% verwendest. Sonst klappt das schon mal gar nicht. Generell wäre es sicher sinnvoller, die Funktion get_permalink($id) zu verwenden, also das in dieser While-Schleife manuell zusammen zu bauen. Wobei ich gerade sehe, dass das auch nur der Inhalt der WordPress-Funktion get_page_uri ist, nur dass diese den if-else-Fehler nicht enthält (wegen des returns).

    Anyway, ist das überhaupt das, was Du machen willst?! ;-)

  • Oh nein, jetzt hast Du doch noch geantwortet :oops:

    Noch mal zur Erklärung: Ich will, dass im Hauptmenü meiner Seite ein Link zur neuesten Subpage der Page auftaucht. Ich hab also das

    PHP
    <?php latest_page('12'); ?>

    von Hand in mein Menü gecodet.

    Wenn man jetzt auf "menüpunkt" klickt kommt man direkt zu "neueste subpage von menüpunkt". So muss ich keine Platzhalterseite in meine Seitenstruktur einbauen.

  • Zitat

    Oh nein, jetzt hast Du doch noch geantwortet :oops:



    Ist nicht so schlimm. ;-)


    Zitat

    So wie beschrieben im ersten Post funktioniert alles.

    Was ich nicht so ganz verstehe (hatte das zugegebenermaßen gestern auch nicht sorgfältig genug gelesen, wer weiß, vielleicht übersehe ich heute auch noch was). Je länger ich mir das anschaue, desto unklarer wird mir, was diese while-Schleife tut. Wenn ich das richtig gelesen habe, ist der page-parent doch ggf. die page selbst, so dass das eine Endlosschleife sein müsste?!?

    Anyway, möglicherweise besser wäre die Verwendung von get_permalink($page_id), nach der dritten Zeile des ursprünglich geposteten Codes. Das würde auch eine andere Permalinkstruktur berücksichtigen.

    Aber wenn es ansonsten so für Dich funktioniert,ist es natürlich auch gut.

Jetzt mitmachen!

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