【问题标题】:Remove specific dropdown filters from Woocommerce products admin list从 Woocommerce 产品管理列表中删除特定的下拉过滤器
【发布时间】:2018-12-13 21:41:52
【问题描述】:

我正在使用 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 过滤器挂钩来删除一些我不需要的产品过滤器?

【问题讨论】:

    标签: php wordpress woocommerce product hook-woocommerce


    【解决方案1】:

    您可以使用 woocommerce_products_admin_list_table_filters 挂钩从管理产品列表页面中删除 “产品类型”“库存状态” 下拉过滤器,这样:

    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 文件中。经过测试并且可以工作。

    【讨论】:

    • 该代码确实删除了“product_type”和“product_status”,但也删除了我创建的自定义分类过滤器。您帮助我在之前的 SO 问题中将自定义过滤器移到 product_category 之后:stackoverflow.com/questions/53752472/…
    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2017-01-15
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多