从Woocommerce产品管理员列表中删除特定的下拉过滤器

时间:2018-12-13 21:41:52

标签: php wordpress woocommerce product hook-woocommerce

我正在使用WooCommerce 3.5.2,并试图找到一种从“产品管理”屏幕中删除某些产品过滤器的简单方法:

Product Admin:

我想从“产品管理”屏幕中删除按产品类型过滤按库存状态过滤。我在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过滤器挂钩来删除一些我不需要的产品过滤器?

1 个答案:

答案 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文件中。经过测试,可以正常工作。

enter image description here