我正在使用WooCommerce 3.5.2,并试图找到一种从“产品管理”屏幕中删除某些产品过滤器的简单方法:
我想从“产品管理”屏幕中删除按产品类型过滤和按库存状态过滤。我在GitHub上寻找答案,发现render_filters()
函数包含woocommerce_products_admin_list_table_filters
过滤器挂钩:
/**
* Render any custom filters and search inputs for the list table.
*/
protected function render_filters() {
$filters = apply_filters(
'woocommerce_products_admin_list_table_filters',
array(
'product_category' => array( $this, 'render_products_category_filter' ),
'product_type' => array( $this, 'render_products_type_filter' ),
'stock_status' => array( $this, 'render_products_stock_status_filter' ),
)
);
ob_start();
foreach ( $filters as $filter_callback ) {
call_user_func( $filter_callback );
}
$output = ob_get_clean();
echo apply_filters( 'woocommerce_product_filters', $output ); // WPCS: XSS ok.
}
但是,除了woocommerce源代码之外,关于用法,我找不到其他地方对此过滤器挂钩的引用。
有没有办法使用此挂钩删除某些产品过滤器?
我看到的另一个选项是来自较早的堆栈溢出线程并使用CSS来显示:
Remove a dropdown select field filter in Woocommerce admin orders list
我猜...感觉不太正确,但是确实可以。
所以我问是否有一种方法可以使用woocommerce_products_admin_list_table_filters
过滤器挂钩来删除一些我不需要的产品过滤器?
答案 0 :(得分:0)
您可以使用woocommerce_products_admin_list_table_filters
挂钩从管理产品列表页面中删除“产品类型” 和“库存状态” 下拉过滤器,方法是:< / p>
add_filter( 'woocommerce_products_admin_list_table_filters', 'remove_products_admin_list_table_filters', 10, 1 );
function remove_products_admin_list_table_filters( $filters ){
// Remove "Product type" dropdown filter
if( isset($filters['product_type']))
unset($filters['product_type']);
// Remove "Product stock status" dropdown filter
if( isset($filters['stock_status']))
unset($filters['stock_status']);
return $filters;
}
代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。