Support

Account

Forum Replies Created

  • oh good god i spent ages on this and ive just seen the error.

    add_filter('acf/upload_prefilter/key=field_627a6567e2078', 'field_name_upload_prefilter');
    function field_nameupload_prefilter($errors) {

    one has a gap in the name …. the other doesnt

    And of course it exists its a function name created. Full on developer brain meltdown today

  • For anyone out there I found the solution. This no longer exists > 'field_name_upload_prefilter'
    SO you need to change it to
    'gist_acf_upload_dir_prefilter'

    I found the solution here > https://gist.github.com/BODA82/a4b810b9c0f17fe4c52f7c7e96ade119

    Here is my code Working as of today.

    function gist_acf_upload_dir_prefilter($errors, $file, $field) {
        
        // Only allow editors and admins, change capability as you see fit
        if( !current_user_can('edit_pages') ) {
            $errors[] = 'Only Editors and Administrators may upload attachments';
        }
        
        // This filter changes directory just for item being uploaded
        add_filter('upload_dir', 'gist_acf_upload_dir');
        
    }
    
    // ACF hook, set to field key of your file upload field
    add_filter('acf/upload_prefilter/key=field_627a6567e2078', 'gist_acf_upload_dir_prefilter', 10, 3 );
    
    // Custom upload directory
    function gist_acf_upload_dir($param) {
        
        // Set to whatever directory you want the ACF file field to upload to
        $custom_dir = '/uploads/protected';
        $param['path'] = WP_CONTENT_DIR . $custom_dir;
        $param['url'] = WP_CONTENT_URL . $custom_dir;
    
        return $param;
        
    }
  • Another Update >

    [10-May-2022 13:50:24 UTC] PHP Warning:  call_user_func_array() expects parameter 1 to be a valid callback, function 'field_name_upload_prefilter' not found or invalid function name in public_html/wp-includes/class-wp-hook.php on line 309
    
  • I have also tried the following array solution but this didnt work either.

    I had the same issue as @dtx211. I solved the problem by passing an array with the filters:

    add_filter(‘acf/upload_prefilter/name=my_acf_upload_fieldname’, array( $this, ‘field_name_upload_prefilter’ ) );

    AND

    add_filter(‘upload_dir’, array( $this, ‘field_name_upload_dir’ ) );

    Also ensure, that the upload directory has the right access rights and maybe already exists.

Viewing 4 posts - 1 through 4 (of 4 total)