Как исключить / отфильтровать тег из get_the_tag_list ()

Кто-нибудь знает, как исключить / отфильтровать тег из строки HTML, сгенерированной get_the_tag_list ()?

http://codex.wordpress.org/Function_Reference/get_the_tag_list

Любая помощь очень ценится.

function mytheme_filter_tags( $term_links ) { $result = array(); $exclude_tags = array( 'some tag', 'another tag', 'third tag' ); foreach ( $term_links as $link ) { foreach ( $exclude_tags as $tag ) { if ( stripos( $link, $tag ) !== false ) continue 2; } $result[] = $link; } return $result; } add_filter( "term_links-post_tag", 'mytheme_filter_tags', 100, 1 ); // do loop stuff echo get_the_tag_list('<p>Tags: ',', ','</p>'); // end loop stuff remove_filter( "term_links-post_tag", 'mytheme_filter_tags', 100 ); 

Это фрагмент из одного из моих блогов:

 function get_filtered_tags($post_id) { // the slugs to be INCLUDED in the term list: $primary_tags = array( 'books', 'travel', ... ); $post_tags = wp_get_object_terms($post_id, 'post_tag'); if( ! empty( $post_tags ) ) { if( ! is_wp_error( $post_tags )) { $tag_end = __( ', ', 'twentytwelve' ); foreach ( $post_tags as $term ) { $term_slug = $term->slug; if ( in_array( $term_slug, $primary_tags) ) { if ( isset( $tag_list ) ) { $tag_list .= $tag_end; } $tag_list .= '<a href="' . get_term_link($term_slug, 'post_tag') . '">' . $term->name . '</a>'; } } } } return $tag_list; } 

Если вы хотите исключить $primary_tags сделайте следующее:

 if ( ! in_array( $term_slug, $primary_tags) ) { ... } 

Т.е. добавьте ! перед in_array( ... ) .

get_the_tag_list вызывает get_the_term_list который затем вызывает get_the_terms , у которого есть фильтр с именем get_the_terms чтобы вы могли использовать этот фильтр, чтобы исключить ваши теги:

 //add filter add_filter( 'get_the_terms', 'exclude_terms_48735', 10, 1 ); //function to do filtering function exclude_terms_48735( $terms ) { //list the unwanted terms ids $blacklist_terms = array( 1,2,3); // loop through the terms foreach( $terms as $k => $term ) { //only remove term if it's ID is in the array. if(in_array( $term->term_id, $blacklist_terms, true )) unset( $terms[$k] ); } return $terms; }