Удалите теги записей из списка возвращенных терминов таксономии


Спасибо Ghosttoast за помощь в написании этого поста.

Теперь я успешно могу динамически воспроизводить все термины, связанные с таксономией. Однако, к сожалению, это также, похоже, выплевывает все теги post_tags сайта.

Итак, как я могу использовать следующий код, но не показывать стандартные теги post_tags (я бы хотел, чтобы теги post_tags были доступны для использования, просто не показывайте их в результате этого запроса)

// taxonomy term archives
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
foreach($taxonomies as $taxonomy){
    $terms = get_terms($taxonomy);
    if(!empty($terms)){ 
        echo "<ul>";
        foreach ( $terms as $term ) {
            echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'.     $term->name . "</a></li>";
        }
        echo "</ul>";
    }
}
}
Author: Community, 2013-06-18

2 answers

Используйте эту функцию, чтобы определить, является ли таксономия иерархической или нет:

Ссылка на функцию/является иерархической таксономией "Кодекс WordPress

Пример:

// taxonomy term archives
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
foreach($taxonomies as $taxonomy){
    // only want hierarchical -- no tags please
    if(is_taxonomy_hierarchical($taxonomy)){
        $terms = get_terms($taxonomy);
        if(!empty($terms)){ 
            echo "<ul>";
            foreach ( $terms as $term ) {
                echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'.     $term->name . "</a></li>";
            }
            echo "</ul>";
        }
    }
}

} // this was missing
 1
Author: GhostToast, 2013-06-19 00:35:27

Не уверен, что вы подразумеваете под "Я хотел бы сохранить теги post_tags доступными для использования", но я вижу здесь два варианта:

$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
$taxonomies = array_diff($taxonomies,array('post_tag'));
// and then your Loop

Или...

$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
  foreach($taxonomies as $taxonomy){
    if ('post_tag' === $taxonomy) continue;
    $terms = get_terms($taxonomy);
    if(!empty($terms)){ 
        echo "<ul>";
        foreach ( $terms as $term ) {
            echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'.     $term->name . "</a></li>";
        }
        echo "</ul>";
    }
  }
}
 1
Author: s_ha_dum, 2013-06-18 16:59:08