Support » Allgemeine Fragen » Tag-Beschreibung im Front-End anzeigen

  • Hallo,

    ich suche eine Möglichkeit die Beschreibung der Schlagworte im Front-End anzeigen zu lassen. Die Beschreibung soll angezeigt werden bevor der Loop beginnt.

    Hier eine Seite so wie es jetzt aussieht: http://www.awayfromlife.com/tag/rotting-out. Nach googlen habe ich bereits herausgefunden, dass man in der tag.php oder archive.php den Code <?php echo tag_description(); ?> über dem Eintrag <?php if (have_posts()) : while (have_posts()) : the_post(); ?> einfügen muss.

    Leider besitzt mein Theme weder eine tag. noch eine archive.php. Stattdessen handelt es sich auf Nachfrage meines Themes-Herstellers um die loop.php. Leider finde ich dort nicht den Eintrag über den ich den Code einfügen muss, um die Schlagwort-Beschreibung anzuzeigen. Kann mir eventuell jemand sagen wo genau ich die Artikelbeschreibung anzeigen kann? Hier die loop.php:
    http://awayfromlife.com/loop-php/

    Und gibt es eine Möglichkeit in der Schlagwortbeschreibung Bilder, Shortcodes etc. wie in einen Beitrag einzufügen?

    Vielen Dank für eure Hilfe!

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Uhm … OK. Bei Deiner Frage geht es für meinen Geschmack etwas durcheinander, speziell was die Templates angeht. Deshalb ein kleiner Schlenker zum Thema „Template-Hierarchy“.

    Ruft ein Anwender eine Link einer WordPress-Website in seinem Browser auf, wird zunächst geprüft, um welche Art von Inhalten es sich handelt: Startseite? Einzelne Seite? Eine Seite mit mehreren Bloge-Beiträgen? Ein einzelner Blogbeitrag? Eine Suche? Ein Archiv … es gibt noch eine Reihe weiterer Fälle und für jeden kann man eine indivduelle Vorlage (Template) vorsehen. WordPress pickt jeweils das passende Template heraus. Gibt es kein spezielles Template, verwendet WordPress allgemeiner gehaltene Templates, zuletzt die index.php. Einen Plan aller Templates findest Du unter https://developer.wordpress.org/files/2014/10/wp-template-hierarchy.jpg.

    Wenn Du Blog-Beiträge gefunden hast, die nun empfehlen, eine Tag-Beschreibung z.B. in einem Template tag-skandinavien.php unterzubringen, wird diese Beschreibung auch nur angezeigt, wenn das Schlagwort-Archiv „Skandinavien“ aufgerufen wird. Ich vermute aber, dass Du generell bei einer Auflistung von Blogbeiträgen eine Tag-Beschreibung ausgeben möchtest? Dann wäre das Template tag-skandinavien.php oder das allgemeinere archive.php schonmal zu speziell.

    WordPress verwendet zur Darstellung einer Liste von Blogbeiträgen die so genannte Loop, also eine Schleife die abfragt ob Beiträge vorliegen. Wenn ja, werden die Blogbeiträge mit WordPress-Tags wie the_content() ausgegeben. Das PHP-Objekt $post enthält auch die ID’s der verwendeten Tags. D.h., Du könntest innerhalb der Loop auch die Beschreibung zu jedem verwendeten Tag ausgeben (was sich dann ggf. dutzendfach wiederholt, wenn das Tag mehrfach verwendet wird). Der Code zur Ausgabe der Tag-Description zu jedem Blogbeitrag könnte dann z.B. so aussehen:

    <?php
    $posttags = get_the_tags();
    if ($posttags) {
      foreach($posttags as $tag) {
        echo '<p><strong>' . $tag->name . '</strong>:  ';
       echo $tag->description . </p>;
      }
    }
    ?>

    Die Frage, wo dieser Code hingehört, hat Dir der Autor deines Themes bereits (in etwa) verraten: Er verwendet ein Template loop.php, das vermutlich über die Funktion get_template_part() von mehreren Templates verwendet wird. Ob Du den o.g. PHP-Code über oder unter die Ausgabe des Inhalts packst, hängt dann von Deinen individuellen Wünschen ab. Hauptsache, er ist in der Loop, sofern die Tag-Beschreibung für jeden Beitrag wiederholt werden soll.

    Möchtest Du die Beschreibung nur einmal ausgeben, musst Du zunächst das passende Template raussuchen (Tipp: mit dem Plugin „What the File“ kannst du sehr schön prüfen, welche Templates für welche Seiten verwendet werden) und dann ober- oder unterhalb der Loop (bzw. der Funktion get_template_part(), die die Loop aufruft) z.B. folgendes hinzufügen:

    $tags = get_tags();
    $html = '<div class="post_tags">';
    foreach ( $tags as $tag ) {
    	$tag_link = get_tag_link( $tag->term_id );
    
    	$html .= "<a href='$tag_link' title='$tag->name Tag' class='$tag->slug'>";
    	$html .= "$tag->name</a>: ";
            $html .= "$tag->description;
    }
    $html .= '</div>';
    echo $html;

    Bei diesem Code werden übrigens die Beschreibungen aller Tags ausgegeben – dafür die foreach-Schleife. Willst Du tatsächlich nur für ein ganz bestimmtes Schlagwort die Beschreibung ausgeben, kannst Du tatsächlich die Funktion tag_description()mit der ID des Schlagworts verwenden. Also z.B.

    <?php
    //Beschreibung des Schlagworts mit ID 28
    echo 'Tag Description: ' . tag_description('28');
    ?>
    Thread-Starter AwayFromLife

    (@awayfromlife)

    Erst einmal vielen, vielen Dank!

    Ich wollte die Beschreibung für jedes Schlagwort anzeigen lassen. Also quasi nur an den Tag-Seiten (www.awayfromlife.com/tag/…).

    Bin ich dann mit den „Loop“-Code richtig?
    Ich habe die loop.php durchsucht, um den oben von dir genannten Code einzufügen. Ich hab leider den „Loop“ nicht gefunden. Die loop.php besitzt weder get_template_part(), noch the_content() .

    Ich habe den Tag-Description-Code für jedem Blogbbeitrag an ein paar Stellen eingefügt, was aber immer die Seite „zerschossen“ hat. Also leider nicht die richtig Stelle.

    Thread-Starter AwayFromLife

    (@awayfromlife)

    Ich habe es geschafft indem ich in der theme.php folgenden Code unter der Zeile“$out = ‚<h1 class=“main-title archive-title“>‘ . $out . ‚</h1>‘;“ eingegeben habe:
    $out .= tag_description();

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Das Thema „Tag-Beschreibung im Front-End anzeigen“ ist für neue Antworten geschlossen.