Пример #1
0
 /**
  * Check if we're saving, the trigger an action based on the post type
  *
  * @param  int $post_id
  * @param  object $post
  */
 public function save_meta_boxes($post_id, $post)
 {
     // $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 (defined('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($_POST['woocommerce_meta_nonce'], 'woocommerce_save_data')) {
         return;
     }
     // Check the post being saved == the $post_id to prevent triggering this call for other save_post events
     if (empty($_POST['post_ID']) || $_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/woothemes/woocommerce/issues/6485
     // When that is patched in core we cna use the above. For now:
     self::$saved_meta_boxes = true;
     // Check the post type
     if (in_array($post->post_type, wc_get_order_types('order-meta-boxes'))) {
         do_action('woocommerce_process_shop_order_meta', $post_id, $post);
     } elseif (in_array($post->post_type, array('product', 'shop_coupon'))) {
         do_action('woocommerce_process_' . $post->post_type . '_meta', $post_id, $post);
     }
 }