Support

Account

Home Forums Front-end Issues ACF Form Unique Value Validation Reply To: ACF Form Unique Value Validation

  • The values isset($_POST[‘post_ID’] or $_POST[‘post_id’] are not set on the front end when creating a new post with acf_form().

    You’re going to have to alter the code to account for not having a post ID

    
    add_filter('acf/validate_value/name=inventory_id', 'acf_unique_value_field', 10, 4);
      function acf_unique_value_field($valid, $value, $field, $input) {
        if (!$valid) {
          return $valid;
        }
        if (isset($_POST['post_ID'])) {
          $post_id = intval($_POST['post_ID']);
        } elseif (isset($_POST['post_id'])) {
          $post_id = intval($_POST['post_id']);
        } else {
          $post_id = false;
        }
        $post_type = get_post_type($post_id);
        $field_name = $field['name'];
        $args = array(
          'post_type' => $post_type,
          'post_status' => 'publish, draft, trash',
          'meta_query' => array(
            array(
              'key' => $field_name,
              'value' => $value
            )
          )
        );
        if (!empty($post_id) {
          $args['post__not_in'] = array($post_id);
        }
        $query = new WP_Query($args);
        if (count($query->posts)){
          return 'This Value is not Unique. Please enter a unique '.$field['label'];
        }
        return true;
      }