启用 HPOS 时如何从 WooCommerce 订单编辑页面中删除元框

问题描述 投票:0回答:2

如何从订单编辑页面删除特定订单元框。

以下内容适用于旧版本,但不适用于高性能订单存储 (HPOS):

remove_meta_box( 'woocommerce-order-items', 'shop-order', 'normal' ); // Removes products/items meta box for technicians
remove_meta_box( 'woocommerce-order-actions', 'shop-order', 'normal' ); // Removes products/items meta box for technicians
remove_meta_box( 'woocommerce-order-notes', 'shop-order', 'normal' ); // Removes order note meta box for technicians
remove_meta_box( 'order_custom', 'shop-order', 'normal' );

如有任何帮助,我们将不胜感激。

php wordpress woocommerce orders meta-boxes
2个回答
0
投票

下面的代码似乎只是隐藏,但实际上并没有删除它。

function itsm_add_meta_boxes() {
echo '<style>
                #woocommerce-order-items, #woocommerce-order-actions, #wpo_wcpdf-data-input-box, #woocommerce-order-notes, #order_custom { 
                    display: none !important; 
                }
            </style>';
}
add_action( 'add_meta_boxes', 'itsm_add_meta_boxes', 11 );

还有其他建议吗?


0
投票

要删除高性能订单存储 (HPOS) 元框,您需要使用以下内容:

use Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController;

add_action( 'add_meta_boxes', 'admin_order_custom_metabox' );
function admin_order_custom_metabox() {
    $screen = class_exists( '\Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController' ) && wc_get_container()->get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled()
        ? wc_get_page_screen_id( 'shop-order' )
        : 'shop_order';

    remove_meta_box( 'woocommerce-order-items', $screen, 'normal' ); // Removes products/items meta box for technicians
    remove_meta_box( 'woocommerce-order-actions', $screen, 'normal' ); // Removes products/items meta box for technicians
    remove_meta_box( 'woocommerce-order-notes', $screen, 'normal' ); // Removes order note meta box for technicians
    remove_meta_box( 'order_custom', $screen, 'normal' );
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.