{"id":366351,"date":"2026-10-09T11:42:49","date_gmt":"2026-10-09T11:42:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/darkuploader-image-uploader-for-darktable\/"},"modified":"2026-10-09T11:42:28","modified_gmt":"2026-10-09T11:42:28","slug":"darkuploader","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/darkuploader\/","author":15529900,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.5.5","stable_tag":"0.5.5","tested":"7.1.3","requires":"7.0","requires_php":"8.0","requires_plugins":null,"header_name":"DarkUploader - Image uploader for Darktable","header_author":"dansart","header_description":"Upload images from Darktable directly into the WordPress Media Library or supported Gallery plugins","assets_banners_color":"202020","last_updated":"2026-10-09 11:42:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/dans-art.ch","rating":0,"author_block_rating":0,"active_installs":0,"downloads":92,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.5":{"tag":"0.5.5","author":"dansart","date":"2026-10-09 11:42:28","revision":3736529}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3736510,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3736510,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3736510,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3736510,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3736510,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3736528,"resolution":"1","location":"assets","locale":"","width":1008,"height":697},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3736528,"resolution":"2","location":"assets","locale":"","width":1233,"height":808}},"screenshots":[]},"plugin_section":[],"plugin_tags":[285336,210,84,215,1263],"plugin_category":[50],"plugin_contributors":[193651],"plugin_business_model":[],"class_list":["post-366351","plugin","type-plugin","status-publish","hentry","plugin_tags-darktable","plugin_tags-gallery","plugin_tags-media","plugin_tags-photo","plugin_tags-uploader","plugin_category-media","plugin_contributors-dansart","plugin_committers-dansart"],"banners":{"banner":"https:\/\/ps.w.org\/darkuploader\/assets\/banner-772x250.png?rev=3736510","banner_2x":"https:\/\/ps.w.org\/darkuploader\/assets\/banner-1544x500.png?rev=3736510","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/darkuploader\/assets\/icon.svg?rev=3736510","icon":"https:\/\/ps.w.org\/darkuploader\/assets\/icon.svg?rev=3736510","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/darkuploader\/assets\/screenshot-1.png?rev=3736528","caption":""},{"src":"https:\/\/ps.w.org\/darkuploader\/assets\/screenshot-2.png?rev=3736528","caption":""}],"raw_content":"<!--section=description-->\n<p>DarkUploader closes the gap between Darktable and WordPress. Edit your photos in Darktable, select your target gallery \/ library, export them, and they land in WordPress ready to publish.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>Edit your photos in Darktable as usual.<\/li>\n<li>Export them with the <a href=\"https:\/\/github.com\/dans-art\/darkwp\/releases\">DarkWP companion script<\/a> for Darktable.<\/li>\n<li>Pick a target gallery and export. DarkUploader receives the images over a REST endpoint on your site and puts them in the default folders.<\/li>\n<\/ol>\n\n<p>DarkUploader requires the free DarkWP script to be installed in Darktable to upload the photos. DarkUploader is the WordPress side that receives it.<\/p>\n\n<h4>Supported galleries<\/h4>\n\n<ul>\n<li>WordPress Media Library<\/li>\n<li>NextGEN Gallery<\/li>\n<li>Meow Gallery<\/li>\n<li>FooGallery<\/li>\n<\/ul>\n\n<p>Every upload can carry a title, alt text, description, and caption, though which of those fields are used depends on what the target gallery plugin itself supports.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>One-click export from Darktable straight into WordPress<\/li>\n<li>Upload into an existing gallery, or create a new one on the fly<\/li>\n<li>Per-image title, alt text, caption, description, and tags with placeholder support<\/li>\n<li>Batch uploads<\/li>\n<li>Configurable maximum upload size<\/li>\n<li>Upload history and statistics, with configurable log retention<\/li>\n<li>Extensible adapter system for adding support for other gallery plugins<\/li>\n<\/ul>\n\n<h4>For developers<\/h4>\n\n<p>DarkUploader ships with an adapter system so you can register support for a gallery plugin it doesn't cover out of the box:<\/p>\n\n<ul>\n<li><code>darkuploader_supported_galleries<\/code> \u2014 filter to register your own gallery adapter.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate DarkUploader like any other WordPress plugin (Plugins &gt; Add New, or by uploading the zip file).<\/li>\n<li>Go to Media &gt; DarkUploader and choose which gallery plugin(s) DarkUploader is allowed to upload to. By default, no target is active. Make sure to select at least one target before exporting.<\/li>\n<li>Install the <a href=\"https:\/\/github.com\/dans-art\/darkwp\/releases\">DarkWP script<\/a> in Darktable \u2014 follow the installation instructions in that project's readme.<\/li>\n<li>Enter your login and application password in the \"darkwp accounts\" module. The selected user must have the upload_files capability.<\/li>\n<li>Select the export target in the export module.<\/li>\n<li>Export photos<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20another%20plugin%20to%20use%20darkuploader%3F\"><h3>Do I need another plugin to use DarkUploader?<\/h3><\/dt>\n<dd><p>Yes. DarkUploader only handles the WordPress side of the upload. You also need the free <a href=\"https:\/\/github.com\/dans-art\/darkwp\">DarkWP script<\/a> installed in Darktable, which performs the actual export from Darktable to your site.<\/p><\/dd>\n<dt id=\"which%20gallery%20plugins%20are%20supported%3F\"><h3>Which gallery plugins are supported?<\/h3><\/dt>\n<dd><p>The WordPress Media Library, NextGEN Gallery, Meow Gallery, and FooGallery are supported out of the box. Developers can add support for other galleries with the <code>darkuploader_supported_galleries<\/code> filter.<\/p><\/dd>\n<dt id=\"can%20i%20upload%20several%20photos%20to%20the%20same%20gallery%20in%20one%20export%3F\"><h3>Can I upload several photos to the same gallery in one export?<\/h3><\/dt>\n<dd><p>Yes. There is no limit from this plugin. Some galleries might restrict the amount of images per gallery.<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20a%20log%20of%20past%20uploads%3F\"><h3>Where can I see a log of past uploads?<\/h3><\/dt>\n<dd><p>Go to Media &gt; DarkUploader &gt; Statistics &amp; History for a log of uploads (including any errors) and overall statistics. You can control how long logs are kept, or turn logging off entirely, from the General settings.<\/p><\/dd>\n<dt id=\"something%20isn%27t%20working.%20where%20can%20i%20get%20help%3F\"><h3>Something isn't working. Where can I get help?<\/h3><\/dt>\n<dd><p>Open an issue on the <a href=\"https:\/\/github.com\/dans-art\/darkuploader-wordpress-plugin\">DarkUploader support forum on GitHub<\/a>, or email info@dans-art.ch.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.5 - 2026-10-05<\/h4>\n\n<ul>\n<li>Added: Stricter permission checks. Logs and Statistics are only shown to the current user (except admin)<\/li>\n<li>Added: Adapter-specific permission check to respect the gallery plugin's permission requirements<\/li>\n<li>Refactored code<\/li>\n<li>Fixed: Filtering and searching the log returned no results with some users<\/li>\n<li>Improved: Validation and sanitization of log parameters<\/li>\n<li>Fixed: Encoding of special characters in the log<\/li>\n<li>Added: Search log message finds now users by login \/ display name<\/li>\n<\/ul>\n\n<h4>0.5.4 - 2026-09-26<\/h4>\n\n<ul>\n<li>Fixed: Fatal Error when activated on PHP 7.4. Bumped to PHP 8.0<\/li>\n<li>Fixed: Log display did not work in WP &lt;7.0. Bumped required version to 7.0<\/li>\n<li>Changed: The General settings require the manage_options capability. Users with upload_files can still see the statistics and history<\/li>\n<li>Added: Uninstall routine that removes the log table, options, transients and cron<\/li>\n<li>Added: Multisite support for activation, deactivation and new sites<\/li>\n<li>Fixed: Uploading to the disabled Media Library caused a fatal error<\/li>\n<li>Fixed: FooGallery reported success when adding to a gallery that doesn't exist<\/li>\n<li>Fixed: \"No logging\" still created log entries<\/li>\n<li>Fixed: Uploaded images were left in the Media Library when adding them to a Meow Gallery or FooGallery failed<\/li>\n<li>Fixed: wpdb::prepare() notice when loading the history<\/li>\n<li>Fixed: Log dates now use the database timezone, matching the log cleanup<\/li>\n<li>Fixed: The log table could not be created on MySQL &lt; 5.6.5. The table is now also created\/upgraded after plugin updates, and a notice explains when it fails<\/li>\n<li>Fixed: Double escaped messages in the REST responses and the history<\/li>\n<li>Fixed: FooGallery default sort order<\/li>\n<li>Fixed: Translations for the history table and the help tab<\/li>\n<\/ul>\n\n<h4>0.5.3 - 2026-09-17<\/h4>\n\n<ul>\n<li>Removed: Tested up in plugin header<\/li>\n<li>Improved readme<\/li>\n<\/ul>\n\n<h4>0.5.2 - 2026-09-05<\/h4>\n\n<ul>\n<li>Removed debugger access to create fake log entries<\/li>\n<li>Added rel=\"noopener noreferrer\" to links<\/li>\n<\/ul>\n\n<h4>0.5.1 - 2026-09-05<\/h4>\n\n<ul>\n<li>Added translator comment<\/li>\n<li>Fixed various bugs<\/li>\n<li>Fixed: Errors and warnings from the Plugin Check scan<\/li>\n<\/ul>\n\n<h4>0.5.0 - 2026-09-05<\/h4>\n\n<ul>\n<li>Added Meow Gallery support<\/li>\n<li>Refactored wordpress library adapter<\/li>\n<li>Added filter to dynamically add new adapters<\/li>\n<li>Added support for FooGallery<\/li>\n<\/ul>\n\n<h4>0.4.0 - 2026-08-30<\/h4>\n\n<ul>\n<li>All features for the first release version are implemented!<\/li>\n<li>Added WP cron hook<\/li>\n<li>Added function to create log entries for testing (DEBUG only)<\/li>\n<li>Added plugin deactivation function<\/li>\n<li>Improved max upload size field<\/li>\n<li>Added upload size check<\/li>\n<li>Added error logging for failed uploads<\/li>\n<li>Added a Help tab with installation and support info<\/li>\n<li>Added a \"Message type\" column to the History table<\/li>\n<\/ul>\n\n<h4>0.3.5 - 2026-08-29<\/h4>\n\n<ul>\n<li>Added logging database table<\/li>\n<li>Added new rest route to get the logs<\/li>\n<li>Added backend style<\/li>\n<li>Created Statistics and History settings page<\/li>\n<li>Added DataTable to display the logs<\/li>\n<li>Added statistics get and update functions<\/li>\n<li>Updated rest routes to get the History<\/li>\n<\/ul>\n\n<h4>0.3.0 - 2026-08-26<\/h4>\n\n<ul>\n<li>Renamed the plugin to DarkUploader with the textdomain darkup<\/li>\n<li>Added menu under Media<\/li>\n<li>Refactored code<\/li>\n<\/ul>\n\n<h4>0.2.0 - 2026-08-26<\/h4>\n\n<ul>\n<li>Added the <code>\/darkup\/v1\/media<\/code> REST endpoint for uploading an image to a target gallery.<\/li>\n<li>Added a <code>permission_callback<\/code> (requires the <code>upload_files<\/code> capability) to both the <code>\/info<\/code> and <code>\/media<\/code> REST routes.<\/li>\n<li>Implemented the NextGEN Gallery adapter: create a new gallery, or add to an existing one, uploading through NextGEN's own <code>import_image_file()<\/code> API so EXIF extraction, rotation correction, and thumbnail generation are handled the same way NextGEN's own uploader handles them.<\/li>\n<li>Added alt text, description, tags, and published\/hidden (<code>exclude<\/code>) handling for uploaded NextGEN images.<\/li>\n<li>Added batch support (<code>X-Darkup-Batch<\/code> header) so multiple images from one Darktable export can share a single newly created gallery.<\/li>\n<li>Fixed the <code>target<\/code> field's validation callback, which previously accepted any input.<\/li>\n<\/ul>","raw_excerpt":"Send photos from Darktable straight into the WordPress Media Library or your favorite gallery plugin, in one click.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366351"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dansart"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366351"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366351"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366351"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366351"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366351"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}