WordPress is_tag einsetzen

  • Hallo,

    ich hatte vor, unter jedem Artikel eine Liste zu erstellen (bloß der Titel des Artikels und das Datum), welche den Tag haben.

    Also als Erklärung mit dem Bsp. WordPress:

    Weitere Artikel zu "WordPress" findet ihr hier:

    • WordPress 2.7 erschienen - 20.12.2008
    • WordPress erweitern - 10.08.2007


    Der Tag ist in diesem Beispiel WordPress (ID 5).

    Also hatte ich vor mit:

    PHP
    <?php if(is_tag(5)) {>
    
    
    // Liste mit den Artikeln
    
    
    <?php endif;>

    Ist bestimmt total falsche Syntax verwendet worden von mir. Wie bekomme ich es hin, dass zum Beispiel 5 Artikel ausgegeben werden

    habe durch die Suche nichts passendes gefunden. Vielleicht kann mir ja jemand helfen.

    Ein Link würde ja schon helfen.

    Vielen Dank

    Paul

    • 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

  • is_tag() prüft, ob die aktuell betrachtete Seite ein Tag-Archiv ist. Du suchst eher has_tag() - das gibts seit WP 2.6:
    Conditional Tags WordPress Codex

    Bzw. liefert dir get_the_tags() alle Tags zum Artikel zurück:
    Template Tags/get the tags WordPress Codex

    Für ähnliche Artikel verwendest du dann einen neuen Loop, bei dem du Artikel mit diesem Tag abfragst:
    Template Tags/query posts WordPress Codex

  • Ok, dann has_tag. Danke

    Damit hab ich folgenden Code:

    PHP
    <?php if(has_tag('get_post_meta($post->ID, 'ostag', true)')): ?>
        <h2>News zu <?php the_title(); ?></h2>
        <ul>
    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanenter Link zu diesem Artikel"><?php the_title(); ?> - <?php the_time('d.m.Y'); ?></a></li>
        </ul>
    <?php endif; ?>

    Damit erscheint eine weiße Seite. Irgendwas muss da - get_post_meta($post->ID, 'ostag', true) - noch verändert werden.

    Wenn ich statt "get_post_meta($post->ID, 'ostag', true)" zum Beispiel WordPress eingebe so ist es dennoch nicht korrekt. Es wird nur der jetzige Beitrag ausgegeben und nicht alle Artikel mit diesem Tag.

    Wo liegt mein Denkfehler?

  • PHP
    <?php if(has_tag([COLOR="Red"][B]'[/B][/COLOR]get_post_meta($post->ID, 'ostag', true)[B][COLOR="#ff0000"]'[/COLOR][/B])): ?>


    Hier sind die markierten Anführungszeichen zuviel. Was genau steht in "ostag"?


    Zitat

    Wenn ich statt "get_post_meta($post->ID, 'ostag', true)" zum Beispiel WordPress eingebe so ist es dennoch nicht korrekt. Es wird nur der jetzige Beitrag ausgegeben und nicht alle Artikel mit diesem Tag.


    Wie gesagt, has_tag() prüft nur, ob der Beitrag den Tag enthält. Beiträge ausgeben geht immer über einen Loop, etwa so:

    PHP
    <h2>News zu <?php the_title(); ?></h2>
    <ul>
    <?php $relatedPosts = new WP_Query('tag=mytag'); ?>
    <?php while ( $relatedPosts->have_posts() ) : $relatedPosts->the_post(); ?>
      <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanenter Link zu diesem Artikel"><?php the_title(); ?> - <?php the_time('d.m.Y'); ?></a></li>
    <?php endwhile; ?>
    </ul>
  • Muss mich bei dir echt bedanken. Ja da war ich wohl etwas zu vertieft in die benutzerdefinierten felder gewesen ;)

    Aber so haben sich gleich zwei Probleme in Luft aufgelöst ;)

    Vielen Dank

Jetzt mitmachen!

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