diff --git a/src/media.php b/src/media.php index 8af9a45..b0e9e81 100644 --- a/src/media.php +++ b/src/media.php @@ -149,58 +149,54 @@ class MediaManager { return; } - $selected = isset( $_GET[ 'ttgf_media_folder' ] ) ? $_GET[ 'ttgf_media_folder' ] : false; - wp_dropdown_categories([ - 'show_option_all' => 'All folders', - 'taxonomy' => 'ttgf_media_folder', - 'name' => 'ttgf_media_folder', + $selected = isset( $_GET[ $this->taxonomy ] ) ? $_GET[ $this->taxonomy ] : false; + $dropdown = wp_dropdown_categories([ + 'show_option_all' => 'All Tags', + 'taxonomy' => $this->taxonomy, + 'name' => $this->taxonomy, 'orderby' => 'name', 'selected' => $selected, 'hierarchical' => true, - 'value_field' => 'name', + 'value_field' => 'term_id', 'depth' => 3, 'hide_empty' => true, + 'echo' => false ]); - - echo ''; + $dropdown = str_replace(''; - echo ''; - - foreach ( $terms as $term ) { - echo ""; - } - - echo '';*/ + echo $dropdown; } public function apply_list_filter( $query ) { - if ( ! is_admin() || $query->is_main_query() ) { + if ( ! is_admin() || ! $query->is_main_query() ) { + return; + } + if ($query->get('post_type') !== 'attachment') { return; } - if (!empty($_GET['media_folder_filter'])) { + if (!empty($_GET[$this->taxonomy])) { + + $id = $_GET[$this->taxonomy]; + + $tag = $this->tags->get_by_id((int)$id); + if ( $tag === null ) { + return; + } + + $tags = array_merge([$tag], $tag->get_all_children()); + $ids = array_map(fn ($t) => $t->id, $tags); + + unset($query->query_vars['ttgf_media_tags']); $query->set('tax_query', [[ - 'taxonomy' => 'ttgf_media_folder', - 'field' => 'name', - 'terms' => $_GET['ttgf_media_folder'], + 'taxonomy' => 'ttgf_media_tags', + 'field' => 'term_id', + 'terms' => [$ids[0]], + 'include_children' => true, ]]); } - $show_hidden = isset($_GET['ttgf_media_folder_filter']) && $_GET['ttgf_media_folder_filter'] != "show_hidden"; - $query->set('meta_query', [[ - 'key' => 'ttgf_media_hidden', - 'value' => ( ! $show_hidden), - 'compare' => '!=' - ]]); } private function _build_dropdown( $name, $options, $selected, $empty = true ) { @@ -215,4 +211,3 @@ class MediaManager { } new MediaManager(); -