Upload Any File in My Account Registration Form

To allow users to upload a file in the My Account registration form in WooCommerce, you’ll need to customize the registration form and add a file upload field. We’ll use a custom function and a hook to achieve this. Here’s a step-by-step guide:

1. Add File Upload Field to Registration Form:

Add the following code to your theme’s `functions.php` file or a custom plugin to add a file upload field to the My Account registration form:

function custom_registration_form_file_upload() {
    ?>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="file_upload"><?php esc_html_e('Upload Your File', 'text-domain'); ?> <span class="required">*</span></label>
        <input type="file" class="input-file" name="file_upload" id="file_upload" accept=".pdf,.doc,.docx,.png,.jpg,.jpeg" required>
    </p>
    <?php
}
add_action('woocommerce_register_form', 'custom_registration_form_file_upload');

In this code, we added an `<input type=”file”>` field to the registration form with the name attribute set to `file_upload`. The `accept` attribute specifies the file types allowed for upload (you can adjust it according to your requirements).

2. Validate and Process the File Upload:

Next, you’ll need to validate and process the file upload when the user submits the registration form. Use the following code to handle the file upload in the `woocommerce_registration_errors` and `woocommerce_created_customer` hooks:

function custom_registration_form_file_upload_validation($errors, $username, $email) {
    if (isset($_FILES['file_upload']) && !empty($_FILES['file_upload']['name'])) {
        $upload_file = $_FILES['file_upload'];

        // Check for file upload errors
        if ($upload_file['error'] !== UPLOAD_ERR_OK) {
            $errors->add('file_upload_error', __('File upload failed. Please try again.', 'text-domain'));
        }
    }

    return $errors;
}
add_filter('woocommerce_registration_errors', 'custom_registration_form_file_upload_validation', 10, 3);

function custom_registration_form_file_upload_save($customer_id) {
    if (isset($_FILES['file_upload']) && !empty($_FILES['file_upload']['name'])) {
        $upload_file = $_FILES['file_upload'];

        // Handle the file upload and save it to a specific folder
        $upload_dir = wp_upload_dir();
        $file_name = $upload_file['name'];
        $file_tmp = $upload_file['tmp_name'];
        $file_type = wp_check_filetype($file_name);
        $file_path = $upload_dir['path'] . '/' . $file_name;

        // Move the uploaded file to the destination folder
        move_uploaded_file($file_tmp, $file_path);

        // Update user meta with the file path
        update_user_meta($customer_id, 'custom_file_upload', $file_path);
    }
}
add_action('woocommerce_created_customer', 'custom_registration_form_file_upload_save');

 

This code handles the validation and saving of the uploaded file. It checks if the file was uploaded successfully and then moves it to the WordPress uploads folder. It also updates the user meta with the file path for future reference.

Please note that you may need to modify the code to fit your specific requirements, such as the folder where you want to save the uploaded files or the allowed file types.

With these changes, your My Account registration form in WooCommerce will have a file upload field, and the uploaded file will be saved with the user’s account after registration.

Categories

Related Blogs

Disable plugin update in WordPress

While it’s generally not recommended to disable plugin updates in WordPress due to security and functionality improvements, there might be specific cases where you need to prevent certain plugins from updating. Keep in mind that doing so may leave your site vulnerable to security issues and may cause compatibility problems with future WordPress versions.

Fetch WordPress Categories

Fetch wordpress categories Using inbuilt functions like get_categories(), wp_list_categories(), wp_dropdown_categories().

How To add custom product data tabs in WooCommerce

To add custom product data tabs in WooCommerce, you can use the woocommerce_product_data_tabs and woocommerce_product_data_panels hooks. These hooks allow you to add new tabs to the product edit page in the WooCommerce admin area. Here’s a step-by-step guide on how to achieve this:

Add Custom Price on Bulk Purchase in Woocommerce Using ACF

To achieve this functionality, you’ll need to create a custom ACF repeater field for quantity and price in the product admin panel and then display all the prices on the product single page. Additionally, you’ll have to calculate the price according to the selected quantity when a product is added to the cart using WordPress hooks.