快捷搜索:  汽车  科技

为了实现检索去掉重复数据的功能(媒体库中的数据按照文章类别过滤)

为了实现检索去掉重复数据的功能(媒体库中的数据按照文章类别过滤)https://wordpress.org/plugins/media-library-organizer/

为了实现检索去掉重复数据的功能(媒体库中的数据按照文章类别过滤)(1)

个人喜欢折腾,这里面的功能完全可以通过插件来解决,而且更加强大,但是我个人方面仅仅是希望添加一个每天按照分类筛选的功能,经过寻找,确实是找到了相关代码,测试过后也没有任何问题。

这里直接附上代码:

add_action('pre_get_posts' 'my_filter_media_by_cat'); add_action( 'restrict_manage_posts' 'my_add_media_cat_dropdown' ); function my_filter_media_by_cat( $q ) { $scr = get_current_screen(); $cat = filter_input(INPUT_GET 'postcat' FILTER_SANITIZE_STRING ); if ( ! $q->is_main_query() || ! is_admin() || (int)$cat <= 0 || $scr->base !== 'upload' ) return; // get the posts $posts = get_posts( 'nopaging=1&category=' . $cat ); // get post ids $pids = ( ! empty( $posts ) ) ? wp_list_pluck($posts 'ID') : false; if ( ! empty($pids) ) { $pidstxt = implode($pids ' '); global $wpdb; // get the ids of media having retrieved posts as parent $mids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_parent IN ($pidstxt)"); if ( ! empty($mids) ) { // force media query to retrieve only media having retrieved posts as parent $q->set( 'post__in' $mids ); } else { // force media query to return no posts $q->set( 'p' -1 ); // let query found nothing } } } function my_add_media_cat_dropdown() { $scr = get_current_screen(); if ( $scr->base !== 'upload' ) return; $cat = filter_input(INPUT_GET 'postcat' FILTER_SANITIZE_STRING ); $selected = (int)$cat > 0 ? $cat : '-1'; $args = array( 'show_option_none' => 'All Post Categories' 'name' => 'postcat' 'selected' => $selected ); wp_dropdown_categories( $args ); }

代码逻辑方面备注也是相当清楚了,大家有兴趣的可以看看。

如果你觉得上面的代码比较复杂的话。可以考虑下面的插件:

https://wordpress.org/plugins/media-library-organizer/

猜您喜欢: