Untitled
unknown
plain_text
a year ago
1.5 kB
6
Indexable
// Hook into WooCommerce to modify the download URLs
function update_product_downloadable_files($product_id) {
// Get the current downloadable files meta
$downloadable_files = get_post_meta($product_id, '_downloadable_files', true);
// Check if there are downloadable files
if (!is_array($downloadable_files)) {
return; // No downloadable files, exit the function
}
// Flag to check if updates are needed
$update_needed = false;
// Iterate over all files
foreach ($downloadable_files as $key => $file_data) {
// Use regex to extract the PID from the file URL
$matches = [];
if (preg_match('/\?pid=(\d+)/', $file_data['file'], $matches)) {
$attachment_id = $matches[1]; // The PID is the post ID of the attachment
// Retrieve the S3 info meta
$s3_info = get_post_meta($attachment_id, 'ilab_s3_info', true);
// If S3 info is available and contains a URL, update the download URL
if (!empty($s3_info) && isset($s3_info['url'])) {
$downloadable_files[$key]['file'] = $s3_info['url'];
$update_needed = true;
}
}
}
// If updates are needed, save the modified downloads back to the product
if ($update_needed) {
update_post_meta($product_id, '_downloadable_files', $downloadable_files);
}
}
add_action('woocommerce_process_product_meta', function($product_id, $product){
update_product_downloadable_files($product_id);
}, 1000, 2);Editor is loading...
Leave a Comment