Wordpress - hierarchical tags https://css-tricks.com/how-and-why-to-convert-wordpress-tags-from-flat-to-hierarchical/
// shows all tags (e.g. in a posts category grouped alphabetically by parent tag)
function show_all_tags_by_parent() {
// get all tags from current item
$tags = get_tags(array('hide_empty'=>false, 'orderby'=> 'asc'));
$parents = get_tags(array('hide_empty'=>false, 'parent'=>0));
// loop through parents and echo children grouped by parent
foreach ($parents as $key => $parent ) {
echo '<h3 class="tag__parent">' . $parent->name . '</h3>';
foreach ($tags as $key => $tag) :
$tag_link = get_tag_link( $tag->term_id );
if ($tag->parent == $parent->term_id) :
if ($tag->parent !== 0) :
echo "<span class=\"label label-default\"><a href=\"{$tag_link}\" class=\"{$tag->slug}\">{$tag->name}</a></span> ";
endif;
endif;
endforeach;
}
}function wd_hierarchical_tags_register() {
// Maintain the built-in rewrite functionality of WordPress tags
global $wp_rewrite;
$rewrite = array(
'hierarchical' => false, // Maintains tag permalink structure
'slug' => get_option('tag_base') ? get_option('tag_base') : 'tag',
'with_front' => ! get_option('tag_base') || $wp_rewrite->using_index_permalinks(),
'ep_mask' => EP_TAGS,
);
// Redefine tag labels (or leave them the same)
$labels = array(
'name' => _x( 'Tags', 'Taxonomy General Name', 'hierarchical_tags' ),
'singular_name' => _x( 'Tag', 'Taxonomy Singular Name', 'hierarchical_tags' ),
'menu_name' => __( 'Taxonomy', 'hierarchical_tags' ),
'all_items' => __( 'All Tags', 'hierarchical_tags' ),
'parent_item' => __( 'Parent Tag', 'hierarchical_tags' ),
'parent_item_colon' => __( 'Parent Tag:', 'hierarchical_tags' ),
'new_item_name' => __( 'New Tag Name', 'hierarchical_tags' ),
'add_new_item' => __( 'Add New Tag', 'hierarchical_tags' ),
'edit_item' => __( 'Edit Tag', 'hierarchical_tags' ),
'update_item' => __( 'Update Tag', 'hierarchical_tags' ),
'view_item' => __( 'View Tag', 'hierarchical_tags' ),
'separate_items_with_commas' => __( 'Separate tags with commas', 'hierarchical_tags' ),
'add_or_remove_items' => __( 'Add or remove tags', 'hierarchical_tags' ),
'choose_from_most_used' => __( 'Choose from the most used', 'hierarchical_tags' ),
'popular_items' => __( 'Popular Tags', 'hierarchical_tags' ),
'search_items' => __( 'Search Tags', 'hierarchical_tags' ),
'not_found' => __( 'Not Found', 'hierarchical_tags' ),
);
// Override structure of built-in WordPress tags
register_taxonomy( 'post_tag', 'post', array(
'hierarchical' => true, // Was false, now set to true
'query_var' => 'tag',
'labels' => $labels,
'rewrite' => $rewrite,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'_builtin' => true,
) );
}
add_action('init', 'wd_hierarchical_tags_register'); <?php
$thisPostId = get_the_id();
$tagsByTagParent = wp_get_post_tags($thisPostId, array('hide_empty'=>false, 'orderby'=> 'asc', 'parent'=>39));
foreach ($tagsByTagParent as $key => $tag) :
$tag_link = get_tag_link( $tag->term_id );
echo "<span class=\"label label-default\"><a href=\"{$tag_link}\" class=\"{$tag->slug}\">{$tag->name}</a></span> ";
endforeach;
?>