0

In the context of WooCommerce products does anyone know of a way to prevent a user from

  1. Saving Draft

  2. Updating an existing post

  3. Publishing

  4. Submitting for review

IF specific WooCommerce product data fields have not been filled in or any other field for that matter?

It's easy to create MetaBox.io custom fields and set them to be required, but I want to get control over the native Woo and FooEvents fields among other fields such as Post Title, Post Content, Featured Image, etc.

I’ve been playing with a “Save_Post” action hook but having some trouble with it preventing a user from doing any of the 4 actions above. enter image description here I managed to get this much to show up but because of the "redirect" issue related to the save_post hook, the admin notices and the css show up when I "add a new product" which is annoying. Still, I want to be able to prevent the save until these items are filled. Once I figure this out, I think I might be able to take it further with the Woo and FooEvents fields.

1 Answer 1

0

To set required fields in woocommerce when adding a product, you will need to use hooks to enforce validation before the product is saved

// Function to validate required fields before saving product
function custom_validate_required_fields( $product_id, $product ) {
    $errors = array();

    // Check if Post Title is empty
    if ( empty( $product->get_title() ) ) {
        $errors[] = __( 'Product title is required.', 'your-text-domain' );
    }

    // Check if Post Content is empty
    if ( empty( $product->get_description() ) ) {
        $errors[] = __( 'Product content is required.', 'your-text-domain' );
    }

    // Check if Featured Image is empty
    if ( ! has_post_thumbnail( $product_id ) ) {
        $errors[] = __( 'Featured image is required.', 'your-text-domain' );
    }

    // If errors found, display error messages and prevent saving product
    if ( ! empty( $errors ) ) {
        foreach ( $errors as $error ) {
            wc_add_notice( $error, 'error' );
        }
        return false; // Prevent saving product
    }

    return true; // Proceed with saving product
}
add_action( 'woocommerce_process_product_meta', 'custom_validate_required_fields', 10, 2 );

woocommerce_process_product_meta hook fired when a product is being saved. It checks if the required fields Post Title, Post Content, and Featured Image are empty

1
  • Thanks for the response! I applied the code above but the "save draft" button will still set an admin notice saying "Product Updated. View Product". The draft itself does not get saved. What I want it to do is to not even proceed but to rather highlight the fields that are required and then to prevent any progress Commented Mar 5 at 21:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.