private function duplicate_post_meta($id, $new_id)
{
global $wpdb;
$sql = $wpdb->prepare("SELECT meta_key, meta_value FROM {$wpdb->postmeta} WHERE post_id = %d", absint($id));
$exclude = array_map('esc_sql', array_filter(apply_filters('woocommerce_duplicate_product_exclude_meta', array('total_sales', '_wc_average_rating', '_wc_rating_count', '_wc_review_count', '_sku'))));
if (sizeof($exclude)) {
$sql .= " AND meta_key NOT IN ( '" . implode("','", $exclude) . "' )";
}
$post_meta = $wpdb->get_results($sql);
if (sizeof($post_meta)) {
$sql_query_sel = array();
$sql_query = "INSERT INTO {$wpdb->postmeta} (post_id, meta_key, meta_value) ";
foreach ($post_meta as $post_meta_row) {
$sql_query_sel[] = $wpdb->prepare("SELECT %d, %s, %s", $new_id, $post_meta_row->meta_key, $post_meta_row->meta_value);
}
$sql_query .= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}
}