Skip to content

Upload support and functionality for WPGraphQL as specified by graphql-multipart-request-spec.

License

Notifications You must be signed in to change notification settings

cuttlesoft/wp-graphql-upload

 
 

Repository files navigation

WPGraphQL Upload

This plugin adds Upload support to the WPGraphQL plugin as specified by graphql-multipart-request-spec.

Requirements

Using this plugin requires having the WPGraphQL plugin installed and activated.

Activating / Using

You can install and activate the plugin like any WordPress plugin. Download the .zip from Github and add to your plugins directory, then activate.

Once the plugin is active, the Upload scalar type will be available to your mutation input fields.

If you're using composer:

composer require dre1080/wp-graphql-upload

Usage

Then you can start using in your mutations like so:

register_graphql_mutation(
  'upload', [
      'inputFields' => [
          'file' => [
              'type' => ['non_null' => 'Upload'],
          ],
      ],
      'outputFields' => [
          'text' => [
              'type'    => 'String',
              'resolve' => function ($payload) {
                  return $payload['text'];
              },
          ],
      ],
      'mutateAndGetPayload' => function ($input) {
          if (!function_exists('wp_handle_sideload')) {
              require_once(ABSPATH . 'wp-admin/includes/file.php');
          }

          wp_handle_sideload($input['file'], [
              'test_form' => false,
              'test_type' => false,
          ]);

          return [
              'text' => 'Uploaded file was "' . $input['file']['name'] . '" (' . $input['file']['type'] . ').',
          ];
      }
  ]
);

Testing

Requirements:

To run the tests, run the following commands:

bin/install-wp-tests.sh
vendor/bin/phpunit

About

Upload support and functionality for WPGraphQL as specified by graphql-multipart-request-spec.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 69.4%
  • Shell 30.6%