Support

Account

Forum Replies Created

  • Hello,

    I have added the below code to avoid the duplicated content, but this is not working to me could you help me to resolve the issue?

    function unique_repeater_sub_field($valid, $value, $field, $input) {
      if (!$valid) {
        return $valid;
      }
      
      // get list of array indexes from $input
      // [ <= this fixes my IDE, it has problems with unmatched brackets
      preg_match_all('/\[([^\]]+)\]/', $input, $matches);
      if (!count($matches[1])) {
        // this should actually never happen
        return $valid;
      }  
      $matches = $matches[1];
      
      // walk the acf input to find the repeater and cur  rent row      
      $array = $_POST['acf'];
      
      $repeater_key = false;
      $repeater_value = false;
      $row_key = false;
      $row_value = false;   
      $field_key = false;
      $field_value = false;
      
      for ($i=0; $i<count($matches); $i++) {
        if (isset($array[$matches[$i]])) {
          $repeater_key = $row_key;
          $repeater_value = $row_value;
          $row_key = $field_key;
          $row_value = $field_value;
          $field_key = $matches[$i];
          $field_value = $array[$matches[$i]];   
          if ($field_key == $field['field_5731ff201fa2e']) {
            break;
          }
          $array = $array[$matches[$i]];
        }   
      }
      
      if (!$repeater_key) {
        // this should not happen, but better safe than sorry
        return $valid;
      }
      
      // look for duplicate values in the repeater
      foreach ($repeater_value as $index => $row) {
        if ($index != $row_key && $row[$field_key] == $value) {
          // this is a different row with the same value
          $valid = 'this value is not unique';
          break;
        }
      }
            
      return $valid;
    }
         
    
    add_filter('acf/validate_value/key='.$field_key, 'unique_repeater_sub_field', 20, 4);

    Repeated

  • Hi, I have used the below code to avoid the duplicate entry on repeater field, But it is not working to me, could you help me to resolve the issue.

    Thanks

    Repeated

    function unique_repeater_sub_field($valid, $value, $field, $input) {
      if (!$valid) {
        return $valid;
      }
      
      // get list of array indexes from $input
      // [ <= this fixes my IDE, it has problems with unmatched brackets
      preg_match_all('/\[([^\]]+)\]/', $input, $matches);
      if (!count($matches[1])) {
        // this should actually never happen
        return $valid;
      }  
      $matches = $matches[1];
      
      // walk the acf input to find the repeater and cur  rent row      
      $array = $_POST['acf'];
      
      $repeater_key = false;
      $repeater_value = false;
      $row_key = false;
      $row_value = false;   
      $field_key = false;
      $field_value = false;
      
      for ($i=0; $i<count($matches); $i++) {
        if (isset($array[$matches[$i]])) {
          $repeater_key = $row_key;
          $repeater_value = $row_value;
          $row_key = $field_key;
          $row_value = $field_value;
          $field_key = $matches[$i];
          $field_value = $array[$matches[$i]];   
          if ($field_key == $field['<strong>field_5731ff201fa2e</strong>']) {
            break;
          }
          $array = $array[$matches[$i]];
        }   
      }
      
      if (!$repeater_key) {
        // this should not happen, but better safe than sorry
        return $valid;
      }
      
      // look for duplicate values in the repeater
      foreach ($repeater_value as $index => $row) {
        if ($index != $row_key && $row[$field_key] == $value) {
          // this is a different row with the same value
          $valid = 'this value is not unique';
          break;
        }
      }
            
      return $valid;
    }
         
    
    add_filter('acf/validate_value/key='.$field_key, 'unique_repeater_sub_field', 20, 4);
  • This reply has been marked as private.
Viewing 3 posts - 1 through 3 (of 3 total)