WordPress

WordPress: Tag-Cloud / Kategorien mit Aktivzustand

WordPress Entwickler und Webdesigner

Kostenloses live Webinar zu WordPress

Vor ein paar Tagen wurde ich nach einem kleinen Script gefragt, mit dem die Möglichkeit besteht aktive Kategorien auf den Single und Archive Seiten von WordPress zu markieren, wenn diese in Form einer Tag-Cloud dargestellt werden. Ähnliche Scripte gibt es bereits, wenn man die Schlagworte (Tags), die eigentlich in die Tag-Cloud gehören, mit einem Aktivzustand versehen will.

Anzeige:




In diesem Artikel möchte ich euch beide Varianten des Scripts zeigen, also einmal der Aktivzustand für Kategorien in der Tag-Cloud und einmal für Schlagworte. Beide Scripte sind zwar nichts Spektakuläres, aber vielleicht sind sie doch für den einen oder anderen von euch nützlich.

Die folgenden PHP-Funktionen müsst ihr in die functions.php eures WordPress-Themes legen. Beide Scripte, sowohl die Variante für Schlagworte (Tags) als auch die Kategorie (Category) Variante, fügen den Elementen in der Tag-Cloud eine Klasse mit dem Namen .current-tag hinzu, wenn sie entsprechend aktiv sind.

Tag-Cloud Aktivzustand

Wenn ihr eine normale Tag-Cloud verwendet, also das WordPress Widget „Schlagwörter-Wolke“ mit der Taxonomie „Schalgworte“. Dann könnt ihr folgenden Code verwenden, um die aktuell aktiven Elemente der Wolke auf den Archive und Single Seiten aktiv darzustellen (.current-tag):

function tag_cloud_current_tag_highlight( $return ) {
  $post_tags = array();
  if(is_single()) {
    global $post;
    $post_tags = get_the_terms($post->ID,'post_tag');
  }
 
  if(is_tag()) {
    $tags = explode( '+', get_query_var('tag') );
    foreach( $tags as $tag ) { $post_tags[] = get_term_by('slug',$tag,'post_tag'); }
  }
 
  if( $post_tags ) {
      foreach ($post_tags as $pt) {
      $tag = $pt->term_id;
        if(preg_match("#-link-" . $tag . "' #", $return)) {
        $return = str_replace("link-" . $tag . "' ", "link-" . $tag . " current-tag' ", $return);
        }
      }
    }
return $return;
}
 
add_filter ( 'wp_tag_cloud', 'tag_cloud_current_tag_highlight' );

Tag-Cloud Aktivzustand für Kategorien / Categories Taxonomie

Wenn ihr das WordPress Widget „Schlagwörter-Wolke“ nicht mit der Standard-Taxonomie Schlagworte / Tags verwenden möchtet, sondern z.B. mit euren Kategorien, so könnt ihr folgende PHP Funktion verwenden. Die angepassten Parts würden sich ebenfalls auf Varianten mit eigenen Taxonomien übertragen lassen:

function tag_cloud_current_tag_highlight( $return ) {
  	$post_tags = array();
 
  	if( is_single() ){
		global $post;
		$post_tags = get_the_terms($post->ID, 'category');
  	}
 
 	if( is_category() ){
		$tags = explode( '+', get_query_var('category_name') );
		foreach( $tags as $tag ) { $post_tags[] = get_term_by('slug', $tag, 'category'); }
  	}
 
	if( $post_tags ){
  		foreach( $post_tags as $pt ){
      		$tag = $pt->term_id;
      		if( preg_match("#-link-".$tag."' #", $return) ){
        		$return = str_replace("link-".$tag."' ", "link-".$tag." current-cat' ", $return);
       		}
      	}
    }
 
	return $return;
}
 
add_filter ( 'wp_tag_cloud', 'tag_cloud_current_tag_highlight' );

Beispiel-Eintrag für eure style.css:

.current-cat{ font-weight: bold; color:#ff5100; }

Achtet bitte darauf, dass ihr die beiden oben gezeigten Funktionen nicht zeitgleich in einem WordPress-Theme verwenden könnt. Beide Funktionen haben den selben Namen, es würde also zu einem Fehler kommen. Benennt die Funktionen um und ihr könnt problemlos mehrere Varianten der gezeigten Funktion in einem Theme verwenden.

Quelle: Das original Script, dass mir damals zum umschreiben zugeschickt wurde, stammt von http://www.transformationpowertools.com/

Schlagworte zu diesem Artikel: , , , ,

Veröffentlicht von Pascal Bajorat

Pascal Bajorat ist Mediengestalter und arbeitet als Webdesigner / Webentwickler, Autor und Trainer in Berlin. In den vergangenen Jahren hat er sich vor allem auf das CMS WordPress und die Entwicklung von hochwertigen Webseiten und Sonderlösungen spezialisiert. Er hat den Webdesign-Podcast.de 2010 gegründet.

Webseite:

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden .

Der Benachrichtigungs-Dienst wird von WordPress.com (Automattic Inc., USA ) bereitgestellt. Mit der Anmeldung akzeptierst du die Datenschutzerklärung. Die Abmeldung / Abo-Verwaltung ist jederzeit über diesen Link möglich.