Programatically upload file to Groups Protected Files

Is it possible to upload a file to groups files programatically?

I want to make it easier for my client to create a post and have the files they upload protected. I was going to use ACF field type to upload this file then on post save, take that file and ‘send’ it to groups files and get back the id to create the download link.

I can hook into save post and get the file from ACF easily and looking at the docs I can get the id once the groups file is created using groups_created_file. Can I somehow send the file from ACF (which will upload it to the uploads directory) and send it to groups files?


10 Responses to Programatically upload file to Groups Protected Files

  1. George November 22, 2022 at 12:12 pm #

    Yes Patrick,

    Accessing the file_id property is restricted, but you can get the id with get_file_id() method.


  2. George November 22, 2022 at 1:11 am #

    Hey Patrick,

    That’s great news, I’m glad we could help you with your project.

    FYI, the method for reading stored file data needs the file id to be passed, perhaps this is why it is returning null. Why don’t you give it a try…

    Kind regards,

    • Patrick Hazard November 22, 2022 at 1:34 am #

      Hi George, yes it’s getting the ID that’s the issue. I’ve created the instance with the data (from ACF) but have to use null for the ID as i can’t know what it is. Once I then create the actual file with $protected_file->create(); I can step through and see that the file has been created, moved across and has an ID but I can’t access it as it’s a private property. e.g.

      $protected_file->file_id comes up as accessing a private property.

  3. George November 16, 2022 at 1:26 pm #

    Hey Patrick,

    Just in case you haven’t noticed, we have updated the documentation for Groups File Access plugin and I think you will find all the necessary details for your request under:

    However, if further assistance is needed you can always follow-up here.

    Kind regards,

    • Patrick Hazard November 21, 2022 at 4:01 am #

      Hi George, thanks for the new GFA_File class. I’ve got everything nearly working I’m just having an issue accessing the file_id of the newly created file. On post save I get the file from ACF and create a new GFA_File, upload it, everything works. I just can’t access that new ID to save into another custom field.

      I’m using the class

      $protected_file=new GFA_File(
      ‘source’ => $file_array,
      ‘filename’ => ‘test-to-protect-‘ . date( ‘Y-m-d-H-i-s’ ) . ‘.pdf’,
      ‘name’ => $file_name,
      ‘group_ids’ => [ BUSINESS_GROUPS_ID ],


      but $protected_file->read() is coming up as null.

      The file is being created correctly and everything else works. Any ideas on how to access that ID?

  4. George November 15, 2022 at 12:32 pm #

    Hey Patrick,

    That’s correct, we’ve released an updated version of the plugin that includes an extended API. As we speak we are also preparing the update in the documentation so IMO you won’t need to reverse engineer the functionality.

    Kind regards,

  5. George November 11, 2022 at 8:28 pm #

    Hey Patrick,

    Adding the file to the protected folder is only one part of this approach and the rest of it requires some additional API functions that we are working on. Once this is prepared, I’ll let you know exactly what you should use.


  6. Patrick Hazard November 9, 2022 at 11:35 pm #

    Hi George, thanks for the quick response. Yes, I thought I’d have to move the file out of the general uploads folder to the protected downloads folder but that doesn’t automatically add it to groups files and doesn’t give me an ID to use in the post meta does it? Is there anyway of doing this?

    Looking at the plugin would it be possible to call import_files() or gfa_admin_files_add_submit() from within a separate plugin and somehow post the correct info and get back the file ID?


  7. George November 9, 2022 at 3:19 pm #

    Hi Patrick,

    Perhaps you should try and upload the file to the GFA dedicated folder uploads/groups-file-access/ because there, any uploaded file is protected by the plugins .htaccess rule and because this is the only location where the plugin looks and serves files from.

    We are already checking new ways to extend the plugin API with REST but also other ways of including more folders in the restriction “zone”, but at the moment I haven’t got an exact ETA for these features.

    Kind regards,

    • Patrick Hazard November 15, 2022 at 2:07 am #

      Hi George, I’ve just seen there was an update to add the new GFA_File class – is this the API you were talking about? If so, thanks, that was really quick. Do you have any documentation on this? Trying to work it out reverse engineering the class and can’t quite figure it out! Thanks

We use cookies to optimize your experience on our site and assume you're OK with that if you stay.
OK, hide this message.

Affiliates · Contact · Jobs · Terms & Conditions · Privacy Policy · Documentation · Downloads · Useful Plugins · My Account