Added basic filter for media library
This commit is contained in:
parent
644b0ccce8
commit
89f2585709
|
|
@ -149,58 +149,54 @@ class MediaManager {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$selected = isset( $_GET[ 'ttgf_media_folder' ] ) ? $_GET[ 'ttgf_media_folder' ] : false;
|
$selected = isset( $_GET[ $this->taxonomy ] ) ? $_GET[ $this->taxonomy ] : false;
|
||||||
wp_dropdown_categories([
|
$dropdown = wp_dropdown_categories([
|
||||||
'show_option_all' => 'All folders',
|
'show_option_all' => 'All Tags',
|
||||||
'taxonomy' => 'ttgf_media_folder',
|
'taxonomy' => $this->taxonomy,
|
||||||
'name' => 'ttgf_media_folder',
|
'name' => $this->taxonomy,
|
||||||
'orderby' => 'name',
|
'orderby' => 'name',
|
||||||
'selected' => $selected,
|
'selected' => $selected,
|
||||||
'hierarchical' => true,
|
'hierarchical' => true,
|
||||||
'value_field' => 'name',
|
'value_field' => 'term_id',
|
||||||
'depth' => 3,
|
'depth' => 3,
|
||||||
'hide_empty' => true,
|
'hide_empty' => true,
|
||||||
|
'echo' => false
|
||||||
]);
|
]);
|
||||||
|
|
||||||
echo '<select name="ttgf_media_folder_filter">';
|
$dropdown = str_replace('<select ', '<select multiple ', $dropdown);
|
||||||
echo '<option>Select Filter</option>';
|
|
||||||
echo '<option value="show_hidden">Display hidden</option>';
|
|
||||||
echo '</select>';
|
|
||||||
|
|
||||||
|
echo $dropdown;
|
||||||
return;
|
|
||||||
|
|
||||||
/*$terms = get_terms([ 'taxonomy' => 'ttgf_media_folder', 'hide_empty' => false ]);
|
|
||||||
|
|
||||||
echo '<select name="ttgf_media_folder_filter">';
|
|
||||||
echo '<option value="">All Folders</option>';
|
|
||||||
|
|
||||||
foreach ( $terms as $term ) {
|
|
||||||
echo "<option value='{$term->slug}'>{$term->name}</option>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '</select>';*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function apply_list_filter( $query ) {
|
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;
|
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', [[
|
$query->set('tax_query', [[
|
||||||
'taxonomy' => 'ttgf_media_folder',
|
'taxonomy' => 'ttgf_media_tags',
|
||||||
'field' => 'name',
|
'field' => 'term_id',
|
||||||
'terms' => $_GET['ttgf_media_folder'],
|
'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 ) {
|
private function _build_dropdown( $name, $options, $selected, $empty = true ) {
|
||||||
|
|
@ -215,4 +211,3 @@ class MediaManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
new MediaManager();
|
new MediaManager();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue