it-swarm.com.de

Bitte überprüfen Sie, ob das Tag für Posts verwendet wird

Ich verwende Site-Tags für ein Glossar. Ich möchte einen Link zur getaggten Seite anzeigen, wenn das Tag vorhanden ist, andernfalls wird nur der Tag-Titel angezeigt. Gibt es eine Überprüfung, anhand derer ich feststellen kann, ob das Tag in Beiträgen markiert wurde?

    $tags = get_tags( array( 'hide_empty' => false ) );
    if ($tags) {
      foreach ($tags as $tag) {
        if ($tag->description) {
          echo '<dt style="display:inline; float:left; padding-right:5px;"><strong><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
        }
      }
    }

(Working) Update von Chip's Empfehlung

    $tags = get_tags( array( 'hide_empty' => false ) );
    if ($tags) {
      foreach ($tags as $tag) {
        if ($tag->description) {
          echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
              if ( 0 < $tag->count ){
                echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a>';
              } else {
                echo $tag->name;
              }
          echo '</strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
        }
      }
    }

Beispiel Endergebnis http://i.imgur.com/aFs6z.png

4

Versuchen Sie es mit dem Tag has_tag() conditional template. B. um nach dem Tag "foobar" zu fragen:

<?php
if ( has_tag( 'foobar' ) ) {
    // The current post has the tag "foobar";
    // do something
} else {
    // The current post DOES NOT have the tag "foobar";
    // do something else
}
?>

Wenn Sie innerhalb der Schleife sind, rufen Sie einfach <?php has_tag( $tag ); ?> auf. Wenn Sie außerhalb der Schleife sind, müssen Sie die Beitrags-ID übergeben: <?php has_tag( $tag, $post ); ?>

Also, Annäherung an Ihren Code:

$tags = get_tags( array( 'hide_empty' => false ) );
if ( $tags ) {
    foreach ( $tags as $tag ) {
        if ( has_tag( $tag->slug ) ) {
            // Current post has $tag;
            // output the tag link
            echo '<dt style="display:inline; float:left; padding-right:5px;"><strong><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
        } else {
            // Current post does NOT have the tag;
            // output just the tag name
            echo $tag->name;
        }
    }
}

EDIT

Ein weiterer Gedanke: Wenn Sie aus einer beliebigen Liste von Begriffen auswählen und feststellen möchten, ob dieser Begriff als Post-Tag verwendet wird, können Sie versuchen, die Option term_exists() conditional zu verwenden. z.B. Wenn Sie wissen möchten, ob "foobar" als Post-Tag verwendet wird:

<?php 
if ( term_exists( 'foobar', 'post_tag' ) ) {
    // The term 'foobar' is used as a post tag;
    // do something
}
?>

Aber ich bin immer noch verwirrt über Ihre Quelle von "Tags" hier.

EDIT 2

Nun werden wir basierend auf der Tag-Anzahl abfragen, die größer als Null ist (d. H. Das Tag wurde für mindestens einen Beitrag verwendet):

    $tags = get_tags( array( 'hide_empty' => false ) );
    if ($tags) {
      foreach ($tags as $tag) {
        if ( 0 < $tag->count ) {
          echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
              if ( has_tag( $tag->slug ) ) {
                echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a>';
              } else {
                echo $tag->name;
              }
          echo '</strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
        }
      }
    }
3
Chip Bennett

Sie können das von get_tags zurückgegebene Feld count verwenden, um zu überprüfen, ob Beiträge vorhanden sind oder nicht.

$tags = get_tags( array( 'hide_empty' => false ) );
if ($tags) {
    foreach ($tags as $tag) {
        echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
        //check tag count
        if($tag->count > 0){
            //its used on posts
            if ($tag->description) {
                echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
            }else{
                echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt>';
            }
        }else{
            //no posts
            echo $tag->name;
            if ($tag->description)
                echo '<dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
        }
    }
}
1
Bainternet