Как удалить мета-поля определенных заказов со страниц редактирования заказов.
Следующие действия работают с устаревшими заказами, но не с высокопроизводительным хранилищем заказов (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' );
Обновлено:
Я попробовал следующее:
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 );
Он просто скрывает их, но на самом деле не удаляет.
Есть еще предложения?
🤔 А знаете ли вы, что...
PHP широко используется для разработки систем управления контентом, таких как WordPress и Joomla.
Для удаления метабоксов высокопроизводительного хранилища заказов (также совместимых с устаревшими заказами) вам нужно использовать что-то немного другое, поскольку второй аргумент «shop-order» работает только для устаревших заказов.
Обратите внимание, что по умолчанию в WooCommerce действия заказа и примечания к заказу третий аргумент — «сторона» (но не «обычный»).
Попробуйте следующее:
use Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController;
add_action( 'add_meta_boxes', 'admin_order_custom_metabox', 100 );
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 Order items meta box
remove_meta_box( 'woocommerce-order-actions', $screen, 'side' ); // Removes products/items meta box
remove_meta_box( 'woocommerce-order-notes', $screen, 'side' ); // Removes order note meta box
remove_meta_box( 'order_custom', $screen, 'normal' ); // Removes Custom fields meta box
}
Код находится в файле function.php вашей дочерней темы (или в плагине). Протестировано и работает.
Если вы вручную изменили расположение некоторых метабоксов с помощью перетаскивания, вам нужно будет настроить третий аргумент на «нормальный» или «сторона».