WC_Admin_Meta_Boxes::save_meta_boxes( int $post_id, object $post )
Check if we’re saving, the trigger an action based on the post type.
Description Description
Parameters Parameters
- $post_id
-
(Required) Post ID.
- $post
-
(Required) Post object.
Source Source
File: includes/admin/class-wc-admin-meta-boxes.php
public function save_meta_boxes( $post_id, $post ) { $post_id = absint( $post_id ); // $post_id and $post are required if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) { return; } // Dont' save meta boxes for revisions or autosaves. if ( Constants::is_true( 'DOING_AUTOSAVE' ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) { return; } // Check the nonce. if ( empty( $_POST['woocommerce_meta_nonce'] ) || ! wp_verify_nonce( wp_unslash( $_POST['woocommerce_meta_nonce'] ), 'woocommerce_save_data' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized return; } // Check the post being saved == the $post_id to prevent triggering this call for other save_post events. if ( empty( $_POST['post_ID'] ) || absint( $_POST['post_ID'] ) !== $post_id ) { return; } // Check user has permission to edit. if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } // We need this save event to run once to avoid potential endless loops. This would have been perfect: // remove_action( current_filter(), __METHOD__ ); // But cannot be used due to https://github.com/woocommerce/woocommerce/issues/6485 // When that is patched in core we can use the above. self::$saved_meta_boxes = true; // Check the post type. if ( in_array( $post->post_type, wc_get_order_types( 'order-meta-boxes' ), true ) ) { do_action( 'woocommerce_process_shop_order_meta', $post_id, $post ); } elseif ( in_array( $post->post_type, array( 'product', 'shop_coupon' ), true ) ) { do_action( 'woocommerce_process_' . $post->post_type . '_meta', $post_id, $post ); } }