Скрыть подкатегории в админке
Было бы удобно для стандартной сортировки woocommerce (перетаскиванием) скрывать подкатегории.
Вопрос заключается в следующем: как временно (функцией) в админке скрывать подкатегории (для любой таксономии)?
Было бы удобно для стандартной сортировки woocommerce (перетаскиванием) скрывать подкатегории.
Вопрос заключается в следующем: как временно (функцией) в админке скрывать подкатегории (для любой таксономии)?
Можно создать фильтр, который будет скрывать все подкатегории. Как добавить фильтры и изменить запрос описано по этой ссылке. Вам нужно будет переделать код под себя...
Спасибо! Кажется то что нужно. Когда решу свой вопрос - дам обратную связь.
Проверил. Это действительно именно то что нужно! Изменить пришлось только тексономию на product_cat. Спасибо огромное!!! Теперь делать сортировку категорий WC станет легче. Не нужно тянуть через многочисленные подкатегории..
Готовым кодом поделись здесь плз.
Это по сути весь твой код!)
Только я удалил комментарии. И в начале поставил открывающий php чтобы в данном комментарии корректно отображался синтаксис.
<?php // Переключатель уровня категорий в админке $taxonomy = 'product_cat'; add_action( "{$taxonomy}_add_form", function($taxonomy){ ob_start(); } ); add_action( "after-{$taxonomy}-table", function($taxonomy){ $html = ob_get_clean(); $__preg_replace_callback = function( $match ){ $val = @ $_GET['parent_only']; ob_start(); ?> <div class="alignleft actions"> <select name="parent_only" onchange="window.add_param_to_URL(this)"> <option value="">Все уровни...</option> <option value="yes" <?php selected('yes', $val) ?> >Только родители</option> </select> </div> <script> window.add_param_to_URL = function(el){ var href = window.location.href, sep = /[?]/.test(href) ? "&" : "?", name = el.name.replace(/[^a-z_-]/i,''); window.location = (new RegExp(name+'=?')).test(href) ? href.replace( (new RegExp('([?&]'+name+'=?)[^&]*')), (el.value ? "$1"+ el.value : '') ) : (href + sep + name + "="+ el.value); } </script> <?php return $match[1] . ob_get_clean(); }; echo preg_replace_callback('~(id="doaction[^<]+</div>)~', $__preg_replace_callback, $html ); } ); add_filter('get_terms_args', 'my_terms_filter_handler'); function my_terms_filter_handler( $query ){ if( empty($_GET['parent_only']) || ! is_admin() ) return $query; if( ! ( $query['fields'] == 'count' || isset($query['page']) ) ) return $query; $query['parent'] = 0; // только родители return $query; }