Validate password field

add_filter(‘frm_validate_field_entry’, ‘check_user_pass’, 10, 3); function check_user_pass($errors, $posted_field, $posted_value){ if($posted_field->id == 6369){ //change 6369 to the ID of the password field to validate if(!preg_match(‘/^(?=.*[A-Za-z])(?=.*d)[A-Za-z!@#$%&*()?d]{8,}$/’, $posted_value)) { $errors[‘field’. $posted_field->id] = ‘Password must be at least 8 characters long and contain at least…Continue reading

Combine auto increment field with another field

add_filter(‘frm_validate_field_entry’, ‘combine_auto_id_with_field’, 15, 3); function combine_auto_id_with_field( $errors, $posted_field, $posted_value ) { if($posted_field->id == 56){ //change 56 to the ID of the destination field $_POST[‘item_meta’][56] = $_POST[‘item_meta’][54] . $_POST[‘item_meta’][55]; //change 54 and 55 to the IDs of the auto increment field…Continue reading

Calculate time between dates + times

add_filter(‘frm_validate_field_entry’, ‘calculate_time’, 11, 3); function calculate_time($errors, $field, $value){ if($field->id == 30){ //change 30 to the ID of the hidden or admin only field which will hold the calculation $start_date = date_create_from_format( ‘m/d/Y’, $_POST[‘item_meta’][23] ); // Change 23 to the ID…Continue reading

Remove options based on filters

add_filter( ‘frm_setup_new_fields_vars’, ‘frm_remove_filtered’, 20, 2 ); function frm_remove_filtered( $values, $field ) { if ( $field->id !== “577” ) { return $values; } $used_string = FrmProDisplaysController::get_shortcode( array( ‘id’ => 159, ‘filter’ => 0 ) ); if ( ! $used_string ) {…Continue reading

Add Order ID to Entry

add_action( ‘woocommerce_new_order_item’, ‘add_order_id_to_entry’, 10, 3 ); function add_order_id_to_entry( $item_id, $cart_item, $order_id ) { // check if there’s form data to process if ( empty( $cart_item->legacy_values[‘_formidable_form_data’] ) ) { return; } // get form entry $entry = FrmEntry::getOne( $cart_item->legacy_values[‘_formidable_form_data’] ); if…Continue reading

Dynamically add Order ID and save entry data with Order

add_action( ‘woocommerce_new_order_item’, ‘save_entry_data_with_order’, 10, 3 ); function save_entry_data_with_order( $item_id, $cart_item, $order_id ) { // check if there’s form data to process if ( empty( $cart_item->legacy_values[‘_formidable_form_data’] ) ) { return; } // get form entry $entry = FrmEntry::getOne( $cart_item->legacy_values[‘_formidable_form_data’] ); if…Continue reading

Change field value after completed order

add_action( ‘woocommerce_order_status_completed’, ‘update_frm_entry_after_wc_order_completed’ ); function update_frm_entry_after_wc_order_completed( $order_id ) { $order = new WC_Order( $order_id ); $items = $order->get_items(); foreach ( $items as $item_id => $product ) { if ( isset( $product[‘formidable_form_data’] ) && is_numeric( $product[‘formidable_form_data’] ) ) { $entry_id =…Continue reading

Exclude an entry

add_filter( ‘frm_entries_list_query’, ‘set_listed_entries’, 10,2 ); function set_listed_entries( $where, $atts ) { $form_id = 2; // set to your form id if ( $atts[‘form_id’] == $form_id && ! current_user_can(‘administrator’) ) { // who should not see the form? $where[‘it.id !’] =…Continue reading

Use a custom class for the success message

add_filter( ‘frm_main_feedback’, ‘frm_custom_feedback_class’, 20, 3 ); function frm_custom_feedback_class( $message, $form, $entry_id ) { if ( $form->id == 125 ) { //Replace with the ID of your form $message = str_replace(‘frm_message’, ‘my_custom_class’, $message ); } return $message; }Continue reading

Show a message when trying to edit

add_action(‘frm_display_form_action’, ‘close_my_form’, 20, 3); function redirect_edit_form( $params, $fields, $form ) { global $frm_vars; $edit_attempt = isset( $_GET[‘entry’] ); $editing_entry = isset( $frm_vars[‘editing_entry’] ) ? $frm_vars[‘editing_entry’] : 0; if ( $edit_attempt && ! $editing_entry ) { echo ‘You do not have…Continue reading