Links aus Kategorie in Beiträge

  • Liebe WP-Gemeinde,

    im Augenblick schraube ich an meinem mittlerweile lieb gewordenen WP rum.
    Nun würde ich gerne zur usability dem User die letzten 5 Links anbieten.

    Beispiel: Der User befindet sich auf einem Beitrag über Badehosen. Dieser ist in der Kategorie Wassersport abgelegt. Nun möchte ich, dass die letzten 5 Links aus der Kategorie "Wassersport" unter den Text auf der Seite des Badehosen-Beitrag stehen.

    Damit er nicht erst auf Wassersport klicken muss, um zu sehen was es noch an Artikel gibt. Das finde ich nämlich in vielen Blogs nicht gut gelost. Viele überflüssige Klicks und unzähliges Scrollen.

    Hat jemand eine Idee wie man das Bewerkstelligen kann. Wäre sehr dankbar.

    LG vom Wassertreter

    • 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

  • Vielen Dank FrankH für Deine schnelle Antwort.

    Nun war ich auf der Seite und habe leider nur Bahnhof verstanden. Bin nicht so der Programierer und englisch ist nun auch nicht meine große Stärke.

    Entweder Du kannst es mir etwas anschaulicher Erklären oder ich muss auf einen anderen Tipp hoffen.

    LG vom Wassertreter

  • Der andere Tipp:
    Du setzt dich mit dem auf der Seite stehenden Material auseinander.

    Was genau hast du nicht verstanden?
    Was hast du unternommen um es zu verstehen?
    Auf welche konkreten Probleme bist du beim ausprobieren der Beispiele auf den angegebenen Seiten gestoßen?

    Btw. kann ich mir nur schwer vorstellen, dass du, selbst wenn du direkt nach dem Post von Frank dich auf die Doku gestürzt hast, dich innerhalb von <16 Minuten ausführlich mit dieser beschäftigt hast.

    Grüße
    Mo

  • Hallo Wassertreter (hast Du auch einen Namen?),

    ich versuchs mal ;)

    Das was du hinter den Links findest sind Beschreibungen von sog. Wordpress-Template-Tags. Dazu musst Du nicht wirklich programmieren können.

    Diese Template-Tags kannst Du - wie der Name schon sagt - in den Templates Deines Themes einsetzen um damit diverse Dinge anzuzeigen.

    Das im ersten Link aufgeführte Beispiel

    PHP
    <ul>
     <?php
     $posts = get_posts('numberposts=5&offset=1&category=1');
     foreach($posts as $post) :
     ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> --- <?php the_excerpt(); ?></li>
     <?php endforeach; ?>
     </ul>

    würde Dir eine Liste mit dem Titel (verlinkt) der 5 neuesten Beiträge Der Kategorie mit der ID 1 ausgeben.

    Nun musst Du kombiniert mit dem zweiten Template-Tag nur dafür sorgen, dass die hier fest definierte Kategorie 1 durch die ersetzt wird, die im jeweilig bei dir angezeigten Beitrag aktuell ist.

    Ich hab die fertige, funktionierende Lösung nicht parrat und habe leider auch gerade kein Wordpress zum ausprobieren, aber ich würde es. ggf. mal so probieren:


    PHP
    <ul>
     <?php
     $posts = get_posts('numberposts=5&offset=1&category='$cat->cat_ID);
     foreach($posts as $post) :
     ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> --- <?php the_excerpt(); ?></li>
     <?php endforeach; ?>
     </ul>

    bei den Werten in Klammern hinter get_posts(); kannst Du natürlich noch etwas rumspielen ;). Der Offset=1 sollte dafür sorgen, dass der aktuell bereits angezeigte Beitrag nicht mit aufgelistet wird - wär ja auch dumm ;)

  • FrankH,

    vielen Dank!!!

    Habe jetzt ungefähr verstanden. Werden es in den nächsten Stunden mal ausprobieren.
    Vielen Dank für Dein aufwendiges und anschauliches Beispiel und einen gesegneten Tag noch.

    LG vom Wassertreter

  • Da würde eine genaue Fehlermeldung (oder noch besser ein Link) ganz arg weiterhelfen ;)

    ups EDIT: probiers mal damit..

    PHP
    <ul>
     <?php
     $posts = get_posts('numberposts=5&offset=1&category='.$cat->cat_ID);
     foreach($posts as $post) :
     ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> --- <?php the_excerpt(); ?></li>
     <?php endforeach; ?>
     </ul>

    wenn nicht dann poste bitte mal den link bei dem der Fehler erscheint.

  • Hallo FrankH,

    nun habe ich mal eine ganz blöde Frage in welche Seite des Themes stelle ich den Code?

    Also ich habe das mal in die index.php des Themes gepackt. Dann hatte ich immerhin ein Fortschritt. Die 5 Links unter jedem Artikel. Das sah natürlich blöd aus. Soll ja auch erst erscheinen wenn der Beitrag geöffent wurde.

    Ausserdem bekam ich folgende Fehlermeldung:

    Zitat

    WordPress database error:
    [You have an error in your SQL syntax.
    Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND comment_approved = '1'' at line 1]
    SELECT COUNT(comment_ID) FROM wp_comments WHERE comment_post_ID = AND comment_approved = '1';


    Vielleicht sollte ich noch erwähnen das ich mit WP2.0.0 arbeite.
    Link kann ich dir so nicht zeigen, da ich ja am offenen Patienten arbeite und dass dann, wenn es nicht geklappt hat, wieder Rückgangig mache.

    LG vom Wassertreter

  • Hallo Wassertreter,

    in welchems Template du es packen sollst hängt natürlich davon ab wo's stehen woll. Die single.php wäre evtl. ne gute Idee. Die ist für die Darstellung einzelner Artikel (Vollansicht) zuständig.

    Die Fehlermeldung sieht nicht so aus als hätte sie damit zu tun, oder du hast den Code irgendwo mitten in anderen Code gepackt der für die Kommentare zuständig ist.

  • Hatte Code in index.php gesteckt.


    Das war die eine Variante mit entsprechender Fehlermeldung.

    Andere Variante habe Deinen Code als eigene Datei gespeichert und in die
    template-functions-general.php eine Funktion geschrieben ähnlich der function get_footer() und diese Funktion an der selben Stelle in die Index.php eingefügt.

    Ich habe keine single.php, nur eine page.php. Die ist aber glaube ich für die Statischen-Seiten bei mir zuständig?

    Jetzt habe ich gerade einen Versuch gemacht den Code etwas tiefer in der Index.php zu plazieren.


    Erstmal keine Fehlermeldung. Aber zwei Probleme:
    Erstens die 5 Links erscheinen somit natürlich auch auf der Übersichtsseite ganz unten.

    Zweites Problem. Geht man in irgend eine Kategorie auf einen Beitrag sind es immer die letzten 5 Links der Letzten geschrieben Artikel, aber nicht die letzten fünf der gewählten Kategorie.

    Staunend was ein paar Zeilen Buchstaben auslösen können,
    verbleibe ich mit lieben Grüßen der Wassertreter

    P.s. Vielleicht ein wichitger Hinweis die Kategorien befinden sich bei mir auf der Rechten Seite. Für diese hatte ich eine Funktion in die template-functions-general.php geschrieben ähnlich der function get_footer().

    Zitat

    function get_sidebar() {
    if ( file_exists( TEMPLATEPATH . '/sidebar.php') )
    load_template( TEMPLATEPATH . '/sidebar.php');
    else
    load_template( ABSPATH . 'wp-content/themes/default/sidebar.php');
    }


    Vielleicht liegst daran?

    Einmal editiert, zuletzt von Wassertreter (22. September 2006 um 18:02)

  • Zitat

    Das war die eine Variante mit entsprechender Fehlermeldung.


    "entsprechender" hilft mir leider nicht ;) Gibts dazu details?

    Du musst vermutlich zusehen, dass du den code innerhalb "The Loop" platzierst, da nur innerhalb dieser "Schleife" bezug auf den aktuellen Beitrag genommen werden kann.

    Wichtig: Ich fange hier immer mehr an zu raten, da ich im moment grad nicht die Zeit und die Resourcen habe das alles auszuprobieren und ich ebenfalls kein Wordpress-Profi bin. Ich will mit meinem Halbwissen auch nicht Deine Zeit vergeuden. Evtl. kommt ja gleich noch jemand vorbei, der sich etwas besser mit der Materie auskennt und gleich direkt sagen kann wo was hin muss.

    Viele Grüße,
    Frank

    EDIT:

    PHP
    <?php endif; ?>

    ist vermutlich das Ende der Loop - daher wird der Code an dieser Stelle nicht funktionieren (er kommt danach).

  • Vielleicht kann sich jemand dieser Sache annehmen. Habe seit Stunden etliches probiert, aber nichts hinbekommen.:confused:

    Bevor ich jetzt noch was kaputt schieße, hör ich lieber auf. Und warte auf jemand der so etwas bei sich schon eingebaut hat oder weiß wie man die Kategorien ansprechen kann. Meine Ahnung vom Programieren wie schon oben erwähnt ist sehr sehr gering :oops:.
    Aber das Ziel mit den Links in der Kategorie will denoch nicht aufgeben.

    Wäre dankbar wenn an diesem schönen sonnigen Sonnabend sich jemand erbarmt.

    LG vom Wassertreter

  • Also mit viel testen, obwohl ich keine Ahnung habe was ich dar eigentlich so richtig mache, kann ich jetzt immer hin die Kategorie ansprechen.

    Mein Code sieht derzeit so aus

    PHP
    <ul>
     <?php
     foreach((get_the_category()) as $cat)
     $posts = get_posts('numberposts=5&offset=1&category='.$cat->cat_ID);
     foreach($posts as $post) :
     ?>
     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
     <?php endforeach; ?>
    </ul>

    Und liegen tut der Code zwischen:

    PHP
    <?php endif; ?>
    oberer Code
    <?php posts_nav_link(' — ', __('&laquo; Previous Page'), __('Next Page &raquo;')); ?>

    Wenn ich ihn in den LooP eingebaut habe, gabes nur Fehlermeldungen.
    Was der Code tut: In den einzelnen Beiträgen werden die jeweils letzten 5 Beiträge gelistet.

    Problemstelllung: Auf den Übersichtsseiten bzw. Kategorieübersichtsseiten sollen keine 5 Links erscheinen, tuen sie aber derzeit.

    Eine andere Sache ist, dass ich gerne hätte, dass wenn ich auf einen Beitrag bin unten die letzten 5 Links stehen. Aber ebend nicht die zuletzt in der Kategorie geschrieben, sondern die letzten 5 Links die vor dem Beitrag geschrieben wurden auf dem ich mich gerade befinde.

    Sprich man müsste doch irgendwie die id der Beiträge ansprechen und dann kleiner als die jeweils gerade aufgerufene id des Beitrags. Aber das überfordert meine Programierahnung. :oops:

    Bin über jede Hilfe dankbar.

    LG vom Wassertreter und einen schönen Abend noch

  • Nach dem gestern glatt drei Leute drauf gekuckt haben, muss ich es leider wieder hochhohlen.
    Derzeitig Stand meiner armseligen Programmierkünste:

    Derzeit kann ich in den Kategorien die ältesten Beiträge aufrufen. Sprich die aller ersten geschrieben. Ich möchte aber immer von dem ausgehenden Beitrag die letzten 5 angezeigt bekommen.
    Vielleicht kann mir ein kluger Programmierer einen Tipp geben. Wenn nicht, kennt Ihr ein anderes Forum wo mir eventuell weitergeholfen werden kann?
    Möchte einfach nicht aufgeben.

    LG vom Wassertreter

  • Lieber Wassertreter, der Wortlaut der Fehlermeldungen ist sehr wichtig.

    Wenn Du etwas ausprobierst und es funktioniert nicht, dann poste bitte was genau Du gemacht hast und dann die exakte Fehlermeldung. Denn die gibt wertvolle Hinweise zur Fehlerbehebung. Wenn da sensible Daten dabei sein sollten, kannst Du sie ja vorher tilgen.

  • @mastermind,

    es gibt ja keine Fehlermeldung.

    Sondern die Problemstellung die ich mit meinen Programmierkenntnisssen nicht meistern kann.

    Da ich die letzten 5 Beiträge einer Kategorie als Links im unteren Teil eines Beitrags aufführen will und derzeit aber die absolut ältestenen 5 nur gezeigt werden.

    Ich denke man müsste die ID des Beitrag als Variable auslesen und dann die Linkbeiträge irgendwie kleiner 5 in der jeweiligen Kategorie ausgeben. Ich hoffe es ist klar genug ausgedrückt. Aber wie man das macht weiß ich einfach noch nicht.

    LG vom Wassertreter

Jetzt mitmachen!

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