/** * Function and action for duplicating products, * Refactored for 3.8 * Purposely not duplicating stick post status (logically, products are most often duplicated because they share many attributes, where products are generally 'featured' uniquely.) */ function wpsc_duplicate_product() { // Get the original post $id = absint($_GET['product']); $post = get_post($id); // Copy the post and insert it if (isset($post) && $post != null) { $new_id = wpsc_duplicate_product_process($post); $duplicated = true; $sendback = wp_get_referer(); $sendback = add_query_arg('duplicated', (int) $duplicated, $sendback); wp_redirect($sendback); exit; } else { wp_die(__('Sorry, for some reason, we couldn\'t duplicate this product because it could not be found in the database, check there for this ID: ', 'wpsc') . $id); } }
/** * Duplicates children product and children meta * * @uses get_posts() Gets an array of posts given array of arguments * @uses wpsc_duplicate_product_process() Duplicates product * * @param int $old_parent_id req Post id for old parent * @param int $new_parenc_id req Post id for the new parent */ function wpsc_duplicate_children($old_parent_id, $new_parent_id) { //Get children products and duplicate them $child_posts = get_posts(array('post_parent' => $old_parent_id, 'post_type' => 'any', 'post_status' => 'any', 'numberposts' => -1, 'order' => 'ASC')); foreach ($child_posts as $child_post) { wpsc_duplicate_product_process($child_post, $new_parent_id); } }
function duplicate_product($strtCnt, $dupCnt, $data, $msg, $count, $per, $perval) { $post_data = array(); for ($i = $strtCnt; $i < $dupCnt; $i++) { $post_id = $data[$i]; $post = get_post($post_id); if ($post->post_parent == 0) { $post_data[] = wpsc_duplicate_product_process($post); } else { $post_data[] = $data[$i]; } } $duplicate_count = count($post_data); if ($duplicate_count == $count) { $result = true; } else { $result = false; } if ($result == true) { $encoded['msg'] = $msg; $encoded['dupCnt'] = $dupCnt; $encoded['nxtreq'] = $_POST['part']; $encoded['per'] = $per; $encoded['val'] = $perval; } elseif ($result == false) { $encoded['msg'] = $activeModule . __('s were not duplicated', $sm_text_domain); } echo json_encode($encoded); exit; }
/** * Duplicates children product and children meta * * @uses get_posts() Gets an array of posts given array of arguments * @uses wpsc_duplicate_product_process() Duplicates product * * @param int $old_parent_id req Post id for old parent * @param int $new_parenc_id req Post id for the new parent */ function wpsc_duplicate_children($old_parent_id, $new_parent_id) { // Get children products and duplicate them $child_posts = get_posts(array('post_parent' => $old_parent_id, 'post_type' => 'any', 'post_status' => 'any', 'numberposts' => -1, 'order' => 'ASC')); foreach ($child_posts as $child_post) { // Duplicate product images and child posts if ('attachment' == get_post_type($child_post)) { wpsc_duplicate_product_image_process($child_post, $new_parent_id); } else { wpsc_duplicate_product_process($child_post, $new_parent_id); } do_action('wpsc_duplicate_product_child', $child_post, $new_parent_id); } }