public static function update_course_from_product($product_id, $post, $before_update) { $x = ''; // If its not a product, exit if (self::$product_ctp !== $post->post_type || !self::is_active()) { return; } // If update is caused by this class already, then bail if (self::$updated) { self::$updated = false; return; } $base = self::get_base(); $course_id = false; switch ($base) { case '3.0': $course_id = (int) get_post_meta($product_id, 'course_id', true); break; case '2.0': $course_id = (int) get_post_meta($product_id, 'mp_course_id', true); break; } // No point proceeding if there is no associated course if (empty($course_id)) { return; } $sku = $price = $sale_price = ''; $is_sale = $is_paid = false; switch ($base) { case '3.0': $sku = isset($_POST['sku']) ? sanitize_text_field($_POST['sku']) : get_post_meta($product_id, 'sku', true); $sku = is_array($sku) ? array_shift($sku) : $sku; $price = isset($_POST['regular_price']) ? sanitize_text_field($_POST['regular_price']) : get_post_meta($product_id, 'regular_price', true); $price = is_array($price) ? array_shift($price) : $price; $sale_price = isset($_POST['sale_price']['amount']) ? sanitize_text_field($_POST['sale_price']['amount']) : get_post_meta($product_id, 'sale_price_amount', true); $sale_price = is_array($sale_price) ? array_shift($sale_price) : $sale_price; $is_sale = isset($_POST['has_sale']) ? sanitize_text_field($_POST['has_sale']) : get_post_meta($product_id, 'has_sale', true); $is_paid = 'publish' === $post->post_status; break; case '2.0': $sku = get_post_meta($product_id, 'mp_sku', true); $sku = is_array($sku) ? array_shift($sku) : $sku; $price = get_post_meta($product_id, 'mp_price', true); $price = is_array($price) ? array_shift($price) : $price; $sale_price = get_post_meta($product_id, 'mp_sale_price', true); $sale_price = is_array($sale_price) ? array_shift($sale_price) : $sale_price; $is_sale = get_post_meta($product_id, 'mp_is_sale', true); $is_paid = 'publish' === $post->post_status; break; } $meta = array('mp_sku' => $sku, 'mp_price' => $price, 'mp_is_sale' => $is_sale, 'mp_sale_price' => $sale_price, 'paid_course' => $is_paid ? 'on' : 'off'); foreach ($meta as $key => $value) { update_post_meta($course_id, $key, $value); } self::$updated = true; }