Coder Social home page Coder Social logo

cloudinary / cloudinary_wordpress Goto Github PK

View Code? Open in Web Editor NEW
39.0 27.0 27.0 69.11 MB

Cloudinary's WordPress plugin

License: GNU General Public License v2.0

PHP 81.31% CSS 0.01% JavaScript 14.29% SCSS 4.33% Shell 0.07%
wordpress-plugin cloudinary-integration

cloudinary_wordpress's Introduction

Cloudinary's WordPress Plugin

Cloudinary is a cloud service that offers a solution to a web application's entire image and video management pipeline. With Cloudinary, all your images are automatically uploaded, normalized, optimized and backed-up in the cloud instead of being hosted on your servers.

With Cloudinary, you can stop messing around with image editors. Cloudinary can manipulate and transform your images online, on-the-fly, directly from your WordPress console. Enhance your images using every possible filter and effect you can think of. All manipulations are done in the cloud using super-powerful hardware, and all resulting images are cached, optimized (smushed and more) and delivered via a lightning fast content delivery network (CDN).

WordPress Plugin

The plugin is available for installation via WordPress plugins directory. The plugin is publicly available at: https://wordpress.org/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/

This Git repository is the development repository, while there's a mirror public SVN repository of the actual released WordPress plugin version: https://plugins.svn.wordpress.org/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/

Deprecation Note The legacy WordPress Plugin version (v1.x) will be deprecated as of February 1st, 2021, after which support, updates and bug fixes for the legacy plugin will continue in limited fashion. The legacy plugin will be made obsolete on August 1st, 2021 (end-of-life date), meaning, Version 1.x of the plugin will no longer function after that date. We ask that you update to our latest WordPress Plugin v2.x before the August 1st deadline.

Additional resources

Additional resources are available at:

Support

You can open an issue through GitHub.

Contact us https://cloudinary.com/contact

Stay tuned for updates, tips and tutorials: Blog, Twitter, Facebook.

Development

Create a Plugin Release Package

Run npm run package to create the plugin release in the /build directory and package it as cloudinary-image-management-and-manipulation-in-the-cloud-cdn.zip in the root directory.

Files included in the release package are defined in the gruntfile.js under the copy task. Be sure to update this list of files and directories when you add new files to the project.

Deployment to WordPress.org

  1. Tag a release from the master branch on GitHub.

  2. Run npm run deploy to deploy the version referenced in the cloudinary.php file of the current branch.

  3. Run npm run deploy-assets to deploy just the WP.org plugin assets such as screenshots, icons and banners.

License

Released under the GPL license.

cloudinary_wordpress's People

Contributors

asisayag2 avatar bolint avatar bruckercloud avatar const-cloudinary avatar davidcramer avatar dependabot[bot] avatar dugajean avatar edwardr avatar garikmmm avatar garyjones avatar ividic avatar johnwatkins0 avatar kasparsd avatar kienstra avatar konforti avatar marissa-masangcay avatar nadavs avatar pereirinha avatar tocker avatar tormjens avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudinary_wordpress's Issues

Getting a crash (HTTP ERROR 500) when trying to edit page with WP Bakery and Cloudinary plugin activated

Bug Description

When I am trying to edit a page with WP Bakery on a live site (running on OpenLiteSpeed web server) with the cloudinary plugin activated, I get HTTP ERROR 500

Expected Behaviour

I should be able to enter the WP Bakery Visual Composer. The default WP editor works fine

Steps to reproduce

  1. Go to pages
  2. Click on a page, then click edit
  3. See error

Screenshots

Additional context

  • WordPress version: 6.1.1
  • Plugin version: 3.0.9
  • Gutenberg plugin version (if applicable):
  • PHP version: 8.0.7
  • OpenLiteSpeed log during the crash:

[3910065] [162.158.86.84:18486-2#wordpress] [STDERR] PHP Fatal error: Uncaught DivisionByZeroError: Division by zero in /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-delivery.php:1282
Stack trace:
#0 [internal function]: Cloudinary\Delivery->parse_element()
#1 /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-delivery.php(919): array_map()
#2 /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-delivery.php(1742): Cloudinary\Delivery->convert_tags()
#3 /var/www/html/wp-includes/class-wp-hook.php(308): Cloudinary\Delivery->catch_urls()
#4 /var/www/html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters()
#5 /var/www/html/wp-includes/plugin.php(517): WP_Hook->do_action()
#6 /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-string-replace.php(270): do_action()
#7 /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-string-replace.php(296): Cloudinary\String_Replace->prime_replacements()
#8 [internal function]: Cloudinary\String_Replace->replace_strings()
#9 {main}
thrown in /var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-delivery.php on line 1282

Cloudinary URL no longer returned.

Upgraded from 2 to 3 and now I only get the local URL and not the cloudinary URL.

$logo = wp_get_attachment_image_src( $custom_logo_id, 'full');
$logo2 = wp_get_attachment_image( $custom_logo_id, 'full');
error_log(print_r(array($logo,$logo2),true));

[07-Dec-2021 19:31:37 UTC] Array
(
[0] => Array
(
[0] => http://montage2.local/wp-content/uploads/2021/11/main_logo.png
[1] => 264
[2] => 315
[3] =>
)

[1] => <img width="264" height="315" src="http://montage2.local/wp-content/uploads/2021/11/main_logo.png" class="attachment-full size-full" alt="" loading="lazy" srcset="http://montage2.local/wp-content/uploads/2021/11/main_logo.png 264w, http://montage2.local/wp-content/uploads/2021/11/main_logo-251x300.png 251w" sizes="(max-width: 264px) 100vw, 264px" />

)

SYSTEM REPORT

{
"system_status": {
"home": "http://montage2.local",
"wordpress": "5.8.2",
"php": "7.3.5",
"php_extensions": [
"Core",
"date",
"libxml",
"openssl",
"pcre",
"zlib",
"bcmath",
"bz2",
"calendar",
"ctype",
"curl",
"dom",
"hash",
"fileinfo",
"filter",
"ftp",
"gd",
"gettext",
"SPL",
"iconv",
"json",
"mbstring",
"session",
"standard",
"pcntl",
"mysqlnd",
"PDO",
"pdo_mysql",
"Phar",
"posix",
"Reflection",
"mysqli",
"shmop",
"SimpleXML",
"soap",
"sockets",
"exif",
"tokenizer",
"xml",
"xmlreader",
"xmlrpc",
"xmlwriter",
"xsl",
"zip",
"cgi-fcgi",
"Zend OPcache",
"xdebug"
]
},
"theme_status": {
"name": "TailPress Headless",
"version": "1.0.0",
"author": "Jeffrey van Rossum",
"author_url": "https://vanrossum.dev",
"child_theme": false
},
"plugins_report": {
"must_use": [
"/Users/antone/Dropbox (Personal)/Local Sites/montage2/app/public/wp-content/mu-plugins/sso.php"
],
"plugins": [
{
"Name": "Advanced Custom Fields: Extended",
"PluginURI": "",
"Version": "0.8.8.6",
"Description": "All-in-one enhancement suite that improves WordPress & Advanced Custom Fields. By <a href="https://www.acf-extended.com">ACF Extended.",
"Author": "<a href="https://www.acf-extended.com">ACF Extended",
"AuthorURI": "https://www.acf-extended.com",
"TextDomain": "acfe",
"DomainPath": "/lang",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "Advanced Custom Fields: Extended",
"AuthorName": "ACF Extended"
},
{
"Name": "Add WPGraphQL SEO",
"PluginURI": "https://github.com/ashhitch/wp-graphql-yoast-seo",
"Version": "4.16.0",
"Description": "A WPGraphQL Extension that adds support for Yoast SEO By <a href="https://www.ashleyhitchcock.com">Ash Hitchcock.",
"Author": "<a href="https://www.ashleyhitchcock.com">Ash Hitchcock",
"AuthorURI": "https://www.ashleyhitchcock.com",
"TextDomain": "wp-graphql-yoast-seo",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/ashhitch/wp-graphql-yoast-seo">Add WPGraphQL SEO",
"AuthorName": "Ash Hitchcock"
},
{
"Name": "Advanced Custom Fields PRO",
"PluginURI": "https://www.advancedcustomfields.com",
"Version": "5.11.4",
"Description": "Customize WordPress with powerful, professional and intuitive fields. By <a href="https://www.advancedcustomfields.com">Delicious Brains.",
"Author": "<a href="https://www.advancedcustomfields.com">Delicious Brains",
"AuthorURI": "https://www.advancedcustomfields.com",
"TextDomain": "acf",
"DomainPath": "/lang",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://www.advancedcustomfields.com">Advanced Custom Fields PRO",
"AuthorName": "Delicious Brains"
},
{
"Name": "All-in-One WP Migration Unlimited Extension",
"PluginURI": "https://servmask.com/",
"Version": "2.42",
"Description": "Extension for All-in-One WP Migration that enables unlimited size exports and imports By <a href="https://servmask.com/">ServMask.",
"Author": "<a href="https://servmask.com/">ServMask",
"AuthorURI": "https://servmask.com/",
"TextDomain": "all-in-one-wp-migration-unlimited-extension",
"DomainPath": "/languages",
"Network": true,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://servmask.com/">All-in-One WP Migration Unlimited Extension",
"AuthorName": "ServMask"
},
{
"Name": "All-in-One WP Migration",
"PluginURI": "https://servmask.com/",
"Version": "7.50",
"Description": "Migration tool for all your blog data. Import or Export your blog content with a single click. By <a href="https://servmask.com/">ServMask.",
"Author": "<a href="https://servmask.com/">ServMask",
"AuthorURI": "https://servmask.com/",
"TextDomain": "all-in-one-wp-migration",
"DomainPath": "/languages",
"Network": true,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://servmask.com/">All-in-One WP Migration",
"AuthorName": "ServMask"
},
{
"Name": "Bluehost",
"PluginURI": "",
"Version": "2.8.5",
"Description": "This plugin integrates your WordPress site with the Bluehost control panel, including performance, security, and update features. By <a href="https://www.bluehost.com/">Bluehost.",
"Author": "<a href="https://www.bluehost.com/">Bluehost",
"AuthorURI": "https://www.bluehost.com/",
"TextDomain": "bluehost-wordpress-plugin",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "4.7",
"RequiresPHP": "5.6",
"UpdateURI": "",
"Title": "Bluehost",
"AuthorName": "Bluehost"
},
{
"Name": "Cloudinary",
"PluginURI": "https://cloudinary.com/documentation/wordpress_integration",
"Version": "3.0.0",
"Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress. By <a href="https://cloudinary.com/">Cloudinary Ltd., XWP.",
"Author": "<a href="https://cloudinary.com/">Cloudinary Ltd., XWP",
"AuthorURI": "https://cloudinary.com/",
"TextDomain": "cloudinary",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://cloudinary.com/documentation/wordpress_integration">Cloudinary",
"AuthorName": "Cloudinary Ltd., XWP"
},
{
"Name": "Custom Post Type UI",
"PluginURI": "https://github.com/WebDevStudios/custom-post-type-ui/",
"Version": "1.10.0",
"Description": "Admin panel for creating custom post types and custom taxonomies in WordPress By <a href="https://webdevstudios.com/">WebDevStudios.",
"Author": "<a href="https://webdevstudios.com/">WebDevStudios",
"AuthorURI": "https://webdevstudios.com/",
"TextDomain": "custom-post-type-ui",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/WebDevStudios/custom-post-type-ui/">Custom Post Type UI",
"AuthorName": "WebDevStudios"
},
{
"Name": "Disable Comments",
"PluginURI": "https://wordpress.org/plugins/disable-comments/",
"Version": "2.2.4",
"Description": "Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools. By <a href="https://wpdeveloper.net">WPDeveloper.",
"Author": "<a href="https://wpdeveloper.net">WPDeveloper",
"AuthorURI": "https://wpdeveloper.net",
"TextDomain": "disable-comments",
"DomainPath": "/languages/",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://wordpress.org/plugins/disable-comments/">Disable Comments",
"AuthorName": "WPDeveloper"
},
{
"Name": "Enable Media Replace",
"PluginURI": "https://wordpress.org/plugins/enable-media-replace/",
"Version": "3.6.3",
"Description": "Enable replacing media files by uploading a new file in the “Edit Media” section of the WordPress Media Library. By <a href="https://shortpixel.com">ShortPixel.",
"Author": "<a href="https://shortpixel.com">ShortPixel",
"AuthorURI": "https://shortpixel.com",
"TextDomain": "enable-media-replace",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://wordpress.org/plugins/enable-media-replace/">Enable Media Replace",
"AuthorName": "ShortPixel"
},
{
"Name": "Post Type Switcher",
"PluginURI": "https://wordpress.org/plugins/post-type-switcher",
"Version": "3.2.1",
"Description": "A simple way to change a post’s type in WordPress By <a href="https://jjj.software">Triple J Software, Inc..",
"Author": "<a href="https://jjj.software">Triple J Software, Inc.",
"AuthorURI": "https://jjj.software",
"TextDomain": "post-type-switcher",
"DomainPath": "/assets/lang/",
"Network": false,
"RequiresWP": "5.0",
"RequiresPHP": "7.0",
"UpdateURI": "",
"Title": "<a href="https://wordpress.org/plugins/post-type-switcher">Post Type Switcher",
"AuthorName": "Triple J Software, Inc."
},
{
"Name": "SVG Support",
"PluginURI": "http://wordpress.org/plugins/svg-support/",
"Version": "2.3.19",
"Description": "Upload SVG files to the Media Library and render SVG files inline for direct styling/animation of an SVG’s internal elements using CSS/JS. By <a href="https://benbodhi.com">Benbodhi.",
"Author": "<a href="https://benbodhi.com">Benbodhi",
"AuthorURI": "https://benbodhi.com",
"TextDomain": "svg-support",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="http://wordpress.org/plugins/svg-support/">SVG Support",
"AuthorName": "Benbodhi"
},
{
"Name": "UpdraftPlus - Backup/Restore",
"PluginURI": "https://updraftplus.com",
"Version": "1.16.66",
"Description": "Backup and restore: take backups locally, or backup to Amazon S3, Dropbox, Google Drive, Rackspace, (S)FTP, WebDAV & email, on automatic schedules. By <a href="https://updraftplus.com">UpdraftPlus.Com, DavidAnderson.",
"Author": "<a href="https://updraftplus.com">UpdraftPlus.Com, DavidAnderson",
"AuthorURI": "https://updraftplus.com",
"TextDomain": "updraftplus",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "https://wordpress.org/plugins/updraftplus/",
"Title": "<a href="https://updraftplus.com">UpdraftPlus - Backup/Restore",
"AuthorName": "UpdraftPlus.Com, DavidAnderson"
},
{
"Name": "Vercel Deploy Hooks",
"PluginURI": "https://github.com/aderaaij/wp-vercel-deploy-hooks",
"Version": "1.3.0",
"Description": "WordPress plugin for building your Vercel static site on command, post publish/update or scheduled By <a href="https://arden.nl">Arden de Raaij.",
"Author": "<a href="https://arden.nl">Arden de Raaij",
"AuthorURI": "https://arden.nl",
"TextDomain": "vercel-deploy-hooks",
"DomainPath": "",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/aderaaij/wp-vercel-deploy-hooks">Vercel Deploy Hooks",
"AuthorName": "Arden de Raaij"
},
{
"Name": "Wordfence Security",
"PluginURI": "http://www.wordfence.com/",
"Version": "7.5.7",
"Description": "Wordfence Security – Anti-virus, Firewall and Malware Scan By <a href="http://www.wordfence.com/">Wordfence.",
"Author": "<a href="http://www.wordfence.com/">Wordfence",
"AuthorURI": "http://www.wordfence.com/",
"TextDomain": "wordfence",
"DomainPath": "/languages",
"Network": true,
"RequiresWP": "3.9",
"RequiresPHP": "5.3",
"UpdateURI": "",
"Title": "<a href="http://www.wordfence.com/">Wordfence Security",
"AuthorName": "Wordfence"
},
{
"Name": "Yoast SEO",
"PluginURI": "https://yoa.st/1uj",
"Version": "17.7.1",
"Description": "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more. By <a href="https://yoa.st/1uk">Team Yoast.",
"Author": "<a href="https://yoa.st/1uk">Team Yoast",
"AuthorURI": "https://yoa.st/1uk",
"TextDomain": "wordpress-seo",
"DomainPath": "/languages/",
"Network": false,
"RequiresWP": "5.6",
"RequiresPHP": "5.6.20",
"UpdateURI": "",
"Title": "<a href="https://yoa.st/1uj">Yoast SEO",
"AuthorName": "Team Yoast"
},
{
"Name": "WPGraphQL for Advanced Custom Fields",
"PluginURI": "https://wpgraphql.com/acf",
"Version": "0.5.3",
"Description": "Adds Advanced Custom Fields to the WPGraphQL Schema By <a href="https://www.wpgraphql.com">WPGraphQL, Jason Bahl.",
"Author": "<a href="https://www.wpgraphql.com">WPGraphQL, Jason Bahl",
"AuthorURI": "https://www.wpgraphql.com",
"TextDomain": "wp-graphql-acf",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "7.0",
"UpdateURI": "",
"Title": "<a href="https://wpgraphql.com/acf">WPGraphQL for Advanced Custom Fields",
"AuthorName": "WPGraphQL, Jason Bahl"
},
{
"Name": "WPGraphQL Cache",
"PluginURI": "https://github.com/valu-digital/wp-graphql-cache",
"Version": "0.0.7",
"Description": "Add caching for WPGraphQL By Esa-Matti Suuronen, Valu Digital Oy.",
"Author": "Esa-Matti Suuronen, Valu Digital Oy",
"AuthorURI": "",
"TextDomain": "wp-graphql-cache",
"DomainPath": "",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/valu-digital/wp-graphql-cache">WPGraphQL Cache",
"AuthorName": "Esa-Matti Suuronen, Valu Digital Oy"
},
{
"Name": "WP GraphQL Gutenberg",
"PluginURI": "https://github.com/pristas-peter/wp-graphql-gutenberg",
"Version": "0.3.11",
"Description": "Enable blocks in WP GraphQL. By pristas-peter.",
"Author": "pristas-peter",
"AuthorURI": "",
"TextDomain": "wp-graphql-gutenberg-0.3.11",
"DomainPath": "",
"Network": false,
"RequiresWP": "5.4",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/pristas-peter/wp-graphql-gutenberg">WP GraphQL Gutenberg",
"AuthorName": "pristas-peter"
},
{
"Name": "WP GraphQL Gutenberg ACF",
"PluginURI": "https://github.com/pristas-peter/wp-graphql-gutenberg-acf",
"Version": "0.3.0",
"Description": "Enable acf blocks in WP GraphQL. By pristas-peter.",
"Author": "pristas-peter",
"AuthorURI": "",
"TextDomain": "wp-graphql-gutenberg-acf-0.3.0",
"DomainPath": "",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "<a href="https://github.com/pristas-peter/wp-graphql-gutenberg-acf">WP GraphQL Gutenberg ACF",
"AuthorName": "pristas-peter"
},
{
"Name": "WP GraphQL",
"PluginURI": "https://github.com/wp-graphql/wp-graphql",
"Version": "1.6.7",
"Description": "GraphQL API for WordPress By <a href="http://www.wpgraphql.com">WPGraphQL.",
"Author": "<a href="http://www.wpgraphql.com">WPGraphQL",
"AuthorURI": "http://www.wpgraphql.com",
"TextDomain": "wp-graphql",
"DomainPath": "/languages/",
"Network": false,
"RequiresWP": "5.0",
"RequiresPHP": "7.1",
"UpdateURI": "",
"Title": "<a href="https://github.com/wp-graphql/wp-graphql">WP GraphQL",
"AuthorName": "WPGraphQL"
}
]
},
"media_report": {
"786": {
"width": 7358,
"height": 4910,
"file": "2016/09/VIVIO_027.jpg",
"sizes": {
"thumbnail": {
"file": "VIVIO_027-150x150.jpg",
"width": 150,
"height": 150,
"mime-type": "image/jpeg"
},
"medium": {
"file": "VIVIO_027-300x200.jpg",
"width": 300,
"height": 200,
"mime-type": "image/jpeg"
},
"medium_large": {
"file": "VIVIO_027-768x512.jpg",
"width": 768,
"height": 512,
"mime-type": "image/jpeg"
},
"large": {
"file": "VIVIO_027-1024x683.jpg",
"width": 1024,
"height": 683,
"mime-type": "image/jpeg"
},
"Featured Image": {
"file": "VIVIO_027-1000x500.jpg",
"width": 1000,
"height": 500,
"mime-type": "image/jpeg"
},
"Slide Image": {
"file": "VIVIO_027-300x300.jpg",
"width": 300,
"height": 300,
"mime-type": "image/jpeg"
},
"Preview Image": {
"file": "VIVIO_027-1000x1000.jpg",
"width": 1000,
"height": 1000,
"mime-type": "image/jpeg"
}
},
"image_meta": {
"aperture": "9",
"credit": "",
"camera": "NIKON D800E",
"caption": "",
"created_timestamp": "1444127527",
"copyright": "Paul D Mullins",
"focal_length": "16",
"iso": "50",
"shutter_speed": "0",
"title": "",
"orientation": "1",
"keywords": []
},
"attachment": {
"ID": 786,
"post_author": "2",
"post_date": "2016-09-16 18:22:13",
"post_date_gmt": "2016-09-16 18:22:13",
"post_content": "",
"post_title": "Avivo Bathroom",
"post_excerpt": "",
"post_status": "inherit",
"comment_status": "open",
"ping_status": "closed",
"post_password": "",
"post_name": "vivio_027-2",
"to_ping": "",
"pinged": "",
"post_modified": "2016-09-16 18:51:44",
"post_modified_gmt": "2016-09-16 18:51:44",
"post_content_filtered": "",
"post_parent": 0,
"guid": "http://montage2.local/wp-content/uploads/2016/09/VIVIO_027.jpg",
"menu_order": 0,
"post_type": "attachment",
"post_mime_type": "image/jpeg",
"comment_count": "0",
"filter": "raw"
},
"all_meta": {
"_wp_attached_file": [
"2016/09/VIVIO_027.jpg"
],
"_wp_attachment_metadata": [
{
"width": 7358,
"height": 4910,
"file": "2016/09/VIVIO_027.jpg",
"sizes": {
"thumbnail": {
"file": "VIVIO_027-150x150.jpg",
"width": 150,
"height": 150,
"mime-type": "image/jpeg"
},
"medium": {
"file": "VIVIO_027-300x200.jpg",
"width": 300,
"height": 200,
"mime-type": "image/jpeg"
},
"medium_large": {
"file": "VIVIO_027-768x512.jpg",
"width": 768,
"height": 512,
"mime-type": "image/jpeg"
},
"large": {
"file": "VIVIO_027-1024x683.jpg",
"width": 1024,
"height": 683,
"mime-type": "image/jpeg"
},
"Featured Image": {
"file": "VIVIO_027-1000x500.jpg",
"width": 1000,
"height": 500,
"mime-type": "image/jpeg"
},
"Slide Image": {
"file": "VIVIO_027-300x300.jpg",
"width": 300,
"height": 300,
"mime-type": "image/jpeg"
},
"Preview Image": {
"file": "VIVIO_027-1000x1000.jpg",
"width": 1000,
"height": 1000,
"mime-type": "image/jpeg"
}
},
"image_meta": {
"aperture": "9",
"credit": "",
"camera": "NIKON D800E",
"caption": "",
"created_timestamp": "1444127527",
"copyright": "Paul D Mullins",
"focal_length": "16",
"iso": "50",
"shutter_speed": "0",
"title": "",
"orientation": "1",
"keywords": []
}
}
],
"_cloudinary": [
{
"_file_size": 22102111
}
],
"_cld_error": [
"File size exceeds the maximum of 10 MB. This media asset will be served from WordPress."
],
"_cloudinary_process_log": []
}
}
},
"post_report": {
"788": null,
"511": null
},
"config_report": {
"gallery": {
"transition": "fade",
"aspectRatio": "3:4",
"navigation": "always",
"zoom": true,
"carouselLocation": "top",
"carouselOffset": 5,
"carouselStyle": "thumbnails",
"displayProps": {
"mode": "classic",
"columns": 1
},
"indicatorProps": {
"shape": "round"
},
"themeProps": {
"primary": "#cf2e2e",
"onPrimary": "#000000",
"active": "#777777"
},
"zoomProps": {
"type": "popup",
"viewerPosition": "bottom",
"trigger": "click"
},
"thumbnailProps": {
"width": 64,
"height": 64,
"navigationShape": "radius",
"selectedStyle": "gradient",
"selectedBorderPosition": "all",
"selectedBorderWidth": 4,
"mediaSymbolShape": "round"
},
"cloudName": "montage",
"container": "",
"queryParam": "AA"
}
}
}

f_mp4 returns error

Support issued ticket, but I am sending formal ticket here.

When adding f_mp4 to the image transformation for global, it returns "Invalid transformations or erro loading preview."

Calling wp_calculate_image_srcset in a multisite environment returns the wrong srcset

HI Support

I came across this issue after installing Cloudinary on my multi site. When calling wp_calculate_image_srcset from a template or functions file and the image is NOT synced with cloudinary, the srcset returned has a double path to the file.

eg:
for a file: https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/HEALTH_nurse_blood-pressure-e1627651075100.jpg

the generated srcset is:
https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/sites/6/HEALTH_nurse_blood-pressure-e1627651075100-300x169.jpg 300w, https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/sites/6/HEALTH_nurse_blood-pressure-e1627651075100-1024x576.jpg 1024w, https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/sites/6/HEALTH_nurse_blood-pressure-e1627651075100-768x432.jpg 768w, https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/sites/6/HEALTH_nurse_blood-pressure-e1627651075100-1536x864.jpg 1536w, https://tcs000000.local/africafoundation/wp-content/uploads/sites/6/sites/6/HEALTH_nurse_blood-pressure-e1627651075100-300x169.jpg 1920w

notice the double site/6/site6/

After digging around, in your plugin file: class-media.php line 1712 there is a function calculate_image_srcset_meta
In that function you parse the image src, and thats the problem.

Before the parse_url, wordpress sets the $image_meta['file'] as
[file] => About-us_Bheki-and-ladies-laugh.jpg
and after parse_url its
[file] => /africafoundation/wp-content/uploads/sites/6/About-us_Bheki-and-ladies-laugh.jpg

So I think the workround is the image src should only be parsed if it's a cloudinary synced file.

I used the standard 2021 theme with only your plugin enabled and was able to replicate by printing the code below in a template file

	$id = get_post_thumbnail_id();
	$img = wp_get_attachment_image_srcset($id);

Hope this helps debug / fix the issue

Thanks
Dominic da Costa

Trying to access array offset on value of type null

I just did a fresh install of the plugin using the Wordpress Plugins Directory (Wordpress -> plugins -> add new) and I got this warning on the admin (plugin settings):

( ! ) Notice: Trying to access array offset on value of type null in .../wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/ui/class-component.php on line 483
Notice: Trying to access array offset on value of type null in.../wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/ui/class-component.php on line 483
--


1 | 0.0007 | 368504 | {main}( ) | .../admin.php:0
2 | 0.5874 | 8715344 | do_action( ) | .../admin.php:259
3 | 0.5874 | 8715720 | WP_Hook->do_action( ) | .../plugin.php:484
4 | 0.5874 | 8715720 | WP_Hook->apply_filters( ) | .../class-wp-hook.php:311
5 | 0.5874 | 8716848 | Cloudinary\Settings->render( ) | .../class-wp-hook.php:287
6 | 0.5874 | 8717680 | Cloudinary\UI\Component\Page->render( ) | .../class-settings.php:153
7 | 0.5942 | 8793064 | Cloudinary\UI\Component\Page->compile_structures( ) | .../class-component.php:326
8 | 0.5942 | 8793064 | Cloudinary\UI\Component\Page->handle_structure( ) | .../class-component.php:411
9 | 0.5942 | 8793064 | Cloudinary\UI\Component\Page->compile_part( ) | .../class-component.php:446

Here's the same warning on this tests: https://wphive.com/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/

Wordpress Version: 5.6
PHP: PHP 7.4.1
Ubuntu 18.04.3 LTS
Vagrant 2.2.9

Cloudinary urls replaced everywhere in the admin but not when accessing acf fields directly

Bug Description

We have a headless setup and extensively use ACF for our websites. When filling a "link" field with a copy/pasted cloudinary url, the url is replaced by the /wp-content/uploads... url in the database. When displayed in the admin the correct url is shown but when using "get_field" we still get the wp-content url instead of the expected cloudinary one. Since storage is set to cloudinary only, it results in errors as the files are not actually available locally.

Expected Behaviour

Either the url saved in database is what we actually set in the content of the page (prefered) or get_field get_postmeta return the correct url.

Steps to reproduce

  1. Create a page containing ACF fields of type Link
  2. Edit the base and set the link to a cloudinary url from the uploaded medias
  3. Save the page
  4. Call get_field on a link field for this post

Screenshots

Field as visible in the admin:

image

Database Content:

image

Field as fetch from wp shell:

image

Additional context

  • WordPress version: 6.1
  • Plugin version: 3.1.2
  • Gutenberg plugin version (if applicable): /
  • PHP version: 8.0.25
  • Plugin settings: Auto sync, cloudinary only storage, the rest is stock.

Way to get PDF files to sync?

I am using version 2.6.0 of the plugin, on WordPress 5.6.1 and I am unable to get any PDF files to upload into Cloudinary. I have tried the auto-sync feature as well as the manual push to Cloudinary options. When doing bulk uploads, PDFs are just skipped, and when manually pushing one PDF at a time, you can see in the Media Library the orange sync in progress icon, but it soon on page refresh will show it is not synced.

I can not see any plugin settings or logs to show what is happening behind the scenes, so are there any filters made available, or is there some sort of setup on the Cloudinary account itself that needs to take place to allow PDFs to sync from this plugin? This link shows PDFs are allowed, so I would assume I should be able to upload via the plugin as well. Thanks.

https://cloudinary.com/documentation/image_transformations#supported_image_formats

Skipping SVGs from optimizations

Hello,

I am trying to determine the best way to skip .svg files from being optimized. I see from this filter that .svg files initially get converted to .png. But if I use that filter to remove .svg from the array, they still are served from Cloudinary but if you inspect the network tab they are being served as .webp.

The only reliable solution I have found is to just set the image format option in the plugin to "Not set", but that is overkill when you only need to prevent one file format from being converted.

Here is an example of the filter I am using, maybe I am just using it wrong:

function filterCloudinaryConversionTypes($base_types) {
    unset($base_types['svg']);
    return $base_types;
}

add_filter('cloudinary_convert_media_types', 'filterCloudinaryConversionTypes');

or even

function filterCloudinaryConversionTypes() {
    $base_types = array(
        'psd'  => 'jpg',
        'ai'   => 'jpg',
        'eps'  => 'jpg',
        'ps'   => 'jpg',
        'ept'  => 'jpg',
        'eps3' => 'jpg',
        'indd' => 'jpg',
        'webp' => 'gif',
        'bmp'  => 'jpg',
        'flif' => 'jpg',
        'gltf' => 'jpg',
        'heif' => 'jpg',
        'heic' => 'jpg',
        'ico'  => 'png',
        'tga'  => 'jpg',
        'tiff' => 'jpg',
        'tif'  => 'jpg',
    );

    return $base_types;
}

add_filter('cloudinary_convert_media_types', 'filterCloudinaryConversionTypes');

Using the individual level transformations here is not feasible as that is not something that we would want our clients to handle on their own. Thanks!

Upload to Cloudinary by default.

Hello. First off, Cloudinary is pretty awesome, and this WordPress plugin is great, too!

I was wondering if there was a way to set up this plugin so that images are uploaded to Cloudinary by default. The current workflow has me uploading an image through an Advanced Custom Fields post, then having to manually kick off a migration to Cloudinary for each new image I upload. For me personally, this isn't so bad, but I work for a company where we have content authors that aren't going to think to do this every time they upload images.

Other than this small bump in the road, I'm really impressed by this service and this plugin.

-j

Old URL used when uploading media from the WordPress APP via the block editor

Hi! I love the problem this plugin solves, and appreciate y'alls work!

Bug Description

When I upload media via the WordPress app, and then publish a post using that uploaded image using the block editor, it uses the local WordPress URL instead of the Cloudinary URL. In my case, I'm using "Cloudinary only", so that URL doesn't work because the file gets forward to Cloudinary right away.

It seems like the actual image has the correct URL, however, the image data inside the image gallery block is not bound to the image ID, and is instead has a hardcoded href that's generated on-upload. I think this is the source of the problem.

I am able to resolve the problem by manually going onto the site through a web browser and re-building every image block. Doing so forces the URLs to be updated.

Expected Behaviour

I expect to be able to freely upload media from the app, it forward it to Cloudinary, and when published the post uses the correct URLs.

Steps to reproduce

  1. Ensure that Cloudinary only is set in your settings.
  2. Open the WordPress app
  3. Create a new post
  4. In the post, use the image block to upload a new file.
  5. Click Publish
  6. Observe the broken image URL

Additional context

I want to stress that I think the issue here isn't that the image ID is disassociated with the Cloudinary URL. I was able to prove that's correct by checking the admin interface for the image URL, and also cross-referencing it with the REST API image URL that's provided. The issue is that when the post is saved, the href value in the blocks seems to be stored as an attribute, which is used instead of looking up the image URL by the ID. This results in the app providing the incorrect URL in this data, thereby causing the issue.

A potential solution could be to do a find/replace in post content after an image is moved to Cloudinary, looking for these hardcoded references.

I understand that this may be something that's not always easy to implement, so if it's going to be difficult to solve this problem directly, I would really appreciate a little guidance on how I could potentially hook into the moment Cloudinary uploads these files. If one doesn't exist, I think a do_action would be really helpful if it happened just after the file is migrated to Cloudinary, ideally with the image ID, the old URL, and the new URL to enable this change to be made for people who are able to make this customization on their own sites.

Here's my system report:

{
    "system_status": {
        "home": "https://content.standiford.us",
        "wordpress": "6.3.1",
        "php": "8.1.14",
        "php_extensions": [
            "Core",
            "date",
            "libxml",
            "openssl",
            "pcre",
            "zlib",
            "filter",
            "hash",
            "json",
            "Reflection",
            "SPL",
            "session",
            "standard",
            "sodium",
            "cgi-fcgi",
            "mysqlnd",
            "PDO",
            "xml",
            "bcmath",
            "calendar",
            "ctype",
            "curl",
            "dom",
            "mbstring",
            "FFI",
            "fileinfo",
            "ftp",
            "gd",
            "gettext",
            "iconv",
            "igbinary",
            "imagick",
            "intl",
            "exif",
            "mysqli",
            "pdo_mysql",
            "Phar",
            "posix",
            "readline",
            "redis",
            "shmop",
            "SimpleXML",
            "soap",
            "sockets",
            "sysvmsg",
            "sysvsem",
            "sysvshm",
            "tokenizer",
            "xmlreader",
            "xmlwriter",
            "xsl",
            "zip",
            "Zend OPcache"
        ]
    },
    "theme_status": {
        "name": "Twenty Twenty-One",
        "version": "1.8",
        "author": "the WordPress team",
        "author_url": "https://wordpress.org/",
        "child_theme": false
    },
    "plugins_report": {
        "must_use": [
            "mu-plugins/config.php",
            "mu-plugins/index.php",
            "mu-plugins/spinupwp-debug-log-path.php"
        ],
        "plugins": {
            "add-wpgraphql-seo/wp-graphql-yoast-seo.php": {
                "Name": "Add WPGraphQL SEO",
                "PluginURI": "https://github.com/ashhitch/wp-graphql-yoast-seo",
                "Version": "4.22.5",
                "Description": "A WPGraphQL Extension that adds support for Yoast SEO",
                "Author": "Ash Hitchcock",
                "AuthorURI": "https://www.ashleyhitchcock.com",
                "TextDomain": "wp-graphql-yoast-seo",
                "DomainPath": "/languages",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Add WPGraphQL SEO",
                "AuthorName": "Ash Hitchcock",
                "slug": "add-wpgraphql-seo/wp-graphql-yoast-seo.php"
            },
            "cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php": {
                "Name": "Cloudinary",
                "PluginURI": "https://cloudinary.com/documentation/wordpress_integration",
                "Version": "3.1.4",
                "Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress.",
                "Author": "Cloudinary Ltd., XWP",
                "AuthorURI": "https://cloudinary.com/",
                "TextDomain": "cloudinary",
                "DomainPath": "/languages",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Cloudinary",
                "AuthorName": "Cloudinary Ltd., XWP",
                "slug": "cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php"
            },
            "headless-mode/headless-mode.php": {
                "Name": "Headless Mode",
                "PluginURI": "",
                "Version": "0.4.0",
                "Description": "This plugin disables access to the front end of your site unless the logged-in user can edit posts. It also automatically accepts requests to REST API or WP_GRAPHQL endpoints.",
                "Author": "Josh Pollock, Jason Bahl, and Ben Meredith",
                "AuthorURI": "https://github.com/Shelob9/headless-mode",
                "TextDomain": "headless-mode",
                "DomainPath": "",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Headless Mode",
                "AuthorName": "Josh Pollock, Jason Bahl, and Ben Meredith",
                "slug": "headless-mode/headless-mode.php"
            },
            "mailgun/mailgun.php": {
                "Name": "Mailgun",
                "PluginURI": "http://wordpress.org/extend/plugins/mailgun/",
                "Version": "1.9.5",
                "Description": "Mailgun integration for WordPress",
                "Author": "Mailgun",
                "AuthorURI": "http://www.mailgun.com/",
                "TextDomain": "mailgun",
                "DomainPath": "/languages/.",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Mailgun",
                "AuthorName": "Mailgun",
                "slug": "mailgun/mailgun.php"
            },
            "make-paths-relative/make-paths-relative.php": {
                "Name": "Make Paths Relative",
                "PluginURI": "https://www.yasglobal.com/web-design-development/wordpress/make-paths-relative/",
                "Version": "1.3.0",
                "Description": "This plugin converts the URL(Links) to relative instead of absolute.",
                "Author": "YAS Global Team",
                "AuthorURI": "https://www.linkedin.com/in/sami-ahmed-siddiqui/",
                "TextDomain": "make-paths-relative",
                "DomainPath": "/languages/",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Make Paths Relative",
                "AuthorName": "YAS Global Team",
                "slug": "make-paths-relative/make-paths-relative.php"
            },
            "share-on-mastodon/share-on-mastodon.php": {
                "Name": "Share on Mastodon",
                "PluginURI": "https://jan.boddez.net/wordpress/share-on-mastodon",
                "Version": "0.17.0",
                "Description": "Easily share WordPress posts on Mastodon.",
                "Author": "Jan Boddez",
                "AuthorURI": "https://jan.boddez.net/",
                "TextDomain": "share-on-mastodon",
                "DomainPath": "",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "Share on Mastodon",
                "AuthorName": "Jan Boddez",
                "slug": "share-on-mastodon/share-on-mastodon.php"
            },
            "spinupwp/spinupwp.php": {
                "Name": "SpinupWP",
                "PluginURI": "https://spinupwp.com",
                "Version": "1.5.1",
                "Description": "SpinupWP helper plugin.",
                "Author": "SpinupWP",
                "AuthorURI": "",
                "TextDomain": "spinupwp",
                "DomainPath": "",
                "Network": true,
                "RequiresWP": "",
                "RequiresPHP": "7.1",
                "UpdateURI": "",
                "Title": "SpinupWP",
                "AuthorName": "SpinupWP",
                "slug": "spinupwp/spinupwp.php"
            },
            "wordpress-seo/wp-seo.php": {
                "Name": "Yoast SEO",
                "PluginURI": "https://yoa.st/1uj",
                "Version": "21.1",
                "Description": "The first true all-in-one SEO solution for WordPress, including on-page content analysis, XML sitemaps and much more.",
                "Author": "Team Yoast",
                "AuthorURI": "https://yoa.st/1uk",
                "TextDomain": "wordpress-seo",
                "DomainPath": "/languages/",
                "Network": false,
                "RequiresWP": "6.1",
                "RequiresPHP": "7.2.5",
                "UpdateURI": "",
                "Title": "Yoast SEO",
                "AuthorName": "Team Yoast",
                "slug": "wordpress-seo/wp-seo.php"
            },
            "wp-graphql-gutenberg/plugin.php": {
                "Name": "WP GraphQL Gutenberg",
                "PluginURI": "https://github.com/pristas-peter/wp-graphql-gutenberg",
                "Version": "0.3.11",
                "Description": "Enable blocks in WP GraphQL.",
                "Author": "pristas-peter",
                "AuthorURI": "",
                "TextDomain": "wp-graphql-gutenberg",
                "DomainPath": "",
                "Network": false,
                "RequiresWP": "5.4",
                "RequiresPHP": "",
                "UpdateURI": "",
                "Title": "WP GraphQL Gutenberg",
                "AuthorName": "pristas-peter",
                "slug": "wp-graphql-gutenberg/plugin.php"
            },
            "wp-graphql/wp-graphql.php": {
                "Name": "WPGraphQL",
                "PluginURI": "https://github.com/wp-graphql/wp-graphql",
                "Version": "1.16.0",
                "Description": "GraphQL API for WordPress",
                "Author": "WPGraphQL",
                "AuthorURI": "http://www.wpgraphql.com",
                "TextDomain": "wp-graphql",
                "DomainPath": "/languages/",
                "Network": false,
                "RequiresWP": "5.0",
                "RequiresPHP": "7.1",
                "UpdateURI": "",
                "Title": "WPGraphQL",
                "AuthorName": "WPGraphQL",
                "slug": "wp-graphql/wp-graphql.php"
            }
        }
    },
    "config_report": {
        "cloudinary_usage": "",
        "cloudinary_last_usage": {
            "plan": "Free",
            "last_updated": "2023-09-14",
            "date_requested": "2023-09-15T00:00:00Z",
            "transformations": {
                "usage": 3355,
                "credits_usage": 3.36
            },
            "objects": {
                "usage": 1558
            },
            "bandwidth": {
                "usage": 142134902,
                "credits_usage": 0.13
            },
            "storage": {
                "usage": 1683275860,
                "credits_usage": 1.57
            },
            "requests": 1293,
            "credits": {
                "usage": 5.06,
                "limit": 25,
                "used_percent": 20.24
            },
            "resources": 602,
            "derived_resources": 956,
            "cloudinary_ai": {
                "usage": 0,
                "limit": 200
            },
            "object_detection": {
                "usage": 0,
                "limit": 5000
            },
            "media_limits": {
                "image_max_size_bytes": 10485760,
                "video_max_size_bytes": 104857600,
                "raw_max_size_bytes": 10485760,
                "image_max_px": 25000000,
                "asset_max_total_px": 50000000
            },
            "max_image_size": 10485760,
            "max_video_size": 104857600
        },
        "cloudinary_connection_signature": "4c5dc26e0ea25dd86cb64112dfebaf3d",
        "cloudinary_settings_version": "3.1.4",
        "cloudinary_status": {
            "status": "ok"
        },
        "cloudinary_history": {
            "Free": {
                "08-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-08T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "09-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-09T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "10-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-10T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "11-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-11T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "12-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-12T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "13-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-13T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                },
                "14-09-2023": {
                    "plan": "Free",
                    "last_updated": "2023-09-14",
                    "date_requested": "2023-09-14T00:00:00Z",
                    "transformations": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "objects": {
                        "usage": 0
                    },
                    "bandwidth": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "storage": {
                        "usage": 0,
                        "credits_usage": 0
                    },
                    "requests": 0,
                    "credits": {
                        "usage": 0
                    },
                    "resources": 0,
                    "derived_resources": 0,
                    "media_limits": {
                        "image_max_size_bytes": 10485760,
                        "video_max_size_bytes": 104857600,
                        "raw_max_size_bytes": 10485760,
                        "image_max_px": 25000000,
                        "asset_max_total_px": 50000000
                    }
                }
            }
        },
        "rest_api_notices": "",
        "sync_media": {
            "auto_sync": "on",
            "cloudinary_folder": "",
            "offload": "cld"
        },
        "site_cache": {
            "cache": {
                "enable": "some",
                "cld_purge_all": "",
                "assets": {
                    "plugins": {
                        "enabled": "off",
                        "paths": {
                            "wp-graphql-yoast-seo": "off",
                            "cloudinary": "off",
                            "headless-mode": "off",
                            "mailgun": "off",
                            "make-paths-relative": "off",
                            "share-on-mastodon": "off",
                            "spinupwp": "off",
                            "wp-seo": "off",
                            "plugin": "off",
                            "wp-graphql": "off"
                        }
                    },
                    "themes": {
                        "enabled": "off",
                        "paths": {
                            "twentytwentyone": "off"
                        }
                    },
                    "wordpress": {
                        "enabled": "off",
                        "paths": {
                            "wp_admin": "off",
                            "wp_includes": "off"
                        }
                    },
                    "content": {
                        "enabled": "on",
                        "paths": {
                            "wp_content": "on"
                        }
                    }
                }
            }
        },
        "additional_domains": {
            "cache_external": {
                "external_assets": "off",
                "uploadable_domains": []
            }
        },
        "media_display": {
            "image_delivery": "on",
            "image_optimization": "on",
            "image_format": "auto",
            "image_quality": "auto",
            "image_freeform": "",
            "svg_support": "off",
            "crop_sizes": "",
            "image_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg",
            "video_delivery": "on",
            "video_player": "wp",
            "video_controls": "on",
            "video_loop": "off",
            "video_autoplay_mode": "off",
            "video_optimization": "on",
            "video_format": "auto",
            "video_quality": "auto",
            "video_freeform": "",
            "video_preview": "",
            "use_lazy_load": "on",
            "lazy_threshold": "100px",
            "lazy_custom_color": "rgba(153,153,153,0.5)",
            "lazy_animate": "on",
            "lazy_placeholder": "blur",
            "dpr": "2X",
            "lazyload_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg",
            "enable_breakpoints": "on",
            "pixel_step": 200,
            "breakpoints": "",
            "max_width": 2048,
            "min_width": 200,
            "breakpoints_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg"
        },
        "gallery": {
            "transition": "fade",
            "aspectRatio": "3:4",
            "navigation": "always",
            "zoom": true,
            "carouselLocation": "top",
            "carouselOffset": 5,
            "carouselStyle": "thumbnails",
            "displayProps": {
                "mode": "classic",
                "columns": 1
            },
            "indicatorProps": {
                "shape": "round"
            },
            "themeProps": {
                "primary": "#cf2e2e",
                "onPrimary": "#000000",
                "active": "#777777"
            },
            "zoomProps": {
                "type": "popup",
                "viewerPosition": "bottom",
                "trigger": "click"
            },
            "thumbnailProps": {
                "width": 64,
                "height": 64,
                "navigationShape": "radius",
                "selectedStyle": "gradient",
                "selectedBorderPosition": "all",
                "selectedBorderWidth": 4,
                "mediaSymbolShape": "round"
            },
            "cloudName": "dzfhknihi",
            "container": "",
            "queryParam": "AA"
        },
        "cron_system": {
            "cron_system": {
                "enable_cron": "on",
                "tasks": []
            }
        },
        "setup": {
            "reporting": {
                "enable_report": "on"
            }
        },
        "extensions": {
            "media-library": "off"
        }
    },
    "debug_log": [
        "Debug log is empty"
    ]
}

Delivery type seems missing in URL

Hi,

It seems that the delivery type is missing for the uploaded files.
When I check the url it is like https://res.cloudinary.com/<cloud>/images/f_auto,q_auto/v1618217227/filename-6400847/filename.jpg and it's just working.

Although I would have expected something like
https://res.cloudinary.com/<cloud>/images/upload/f_auto,q_auto/v1618217227/filename-6400847/filename.jpg
(with the additional delivery type like upload)

Is there a setting or something that I'm missing over here why the delivery type is not set?

Incorrect call to WP get_post_meta() when $key is null

Since latest release we're facing a bug that is caused due to a mismatch between types.
Its about the call in Media::get_post_meta on
https://github.com/cloudinary/cloudinary_wordpress/blob/2.7.0/php/class-media.php#L1786

It can be possible that $key === null although the Wordpress get_post_meta expects $key to be a string (See https://developer.wordpress.org/reference/functions/get_post_meta/)

This happens to some calls from Sync where $key is not defined and therefore set to null (e.g. https://github.com/cloudinary/cloudinary_wordpress/blob/2.7.0/php/class-sync.php#L482)

In the end this is for me causing issues when you use the Wordpress get_post_metadata filter and expect $key to be a string. We noticed this when using the plugin WP-GraphQL: https://github.com/wp-graphql/wp-graphql/blob/v1.3.5/src/Utils/Preview.php#L22

Stack trace:

NOTICE: PHP message: PHP Fatal error: Uncaught TypeError: Argument 3 passed to WPGraphQL\Utils\Preview::filter_post_meta_for_previews() must be of the type string, null given, called in /var/www/wordpress/bedrock/web/wp/wp-includes/class-wp-hook.php on line 294 and defined in /var/www/wordpress/bedrock/web/app/mu-plugins/wp-graphql/src/Utils/Preview.php:22

#0 /var/www/wordpress/bedrock/web/wp/wp-includes/class-wp-hook.php(294): WPGraphQL\Utils\Preview::filter_post_meta_for_previews()

#1 /var/www/wordpress/bedrock/web/wp/wp-includes/plugin.php(212): WP_Hook->apply_filters()

#2 /var/www/wordpress/bedrock/web/wp/wp-includes/meta.php(564): apply_filters()

#3 /var/www/wordpress/bedrock/web/wp/wp-includes/meta.php(506): get_metadata_raw()

#4 /var/www/wordpress/bedrock/web/wp/wp-includes/post.php(2226): get_metadata()

#5 /var/www/wordpress/bedrock/web/app/mu-plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-media.php(1786): get_post_meta()

#6 /var/www/wordpress/bedrock/web/app/mu-plugins/cloudinary-image-manage in /var/www/wordpress/bedrock/web/app/mu-plugins/wp-graphql/src/Utils/Preview.php on line 22

Improper File Dimensions in SrcSet

I've noticed an issue with invalid width and height transforms being generated in srcsets for images whose file name ends in anything after the last hyphen that contains an 'x' character. This is also leading to large numbers of 40x errors in our reports in combination with the lazy loading plugin.

example:
'timeline-iconic-cars-film-history-4_max_thumb.png' generates a w_4,h_0 transformation due to how it is parsed in the code

I've tracked the issue down to the get_size_from_url() function in the Media Class (php/class-media.php) on line 793.

The following conditional would fix the issue:
It uses an additional RegEx check to validate if the $end_part is a possible dimension or not.

if ((false !== $end_part || false !== strpos($end_part, 'x')) && preg_match('/^[0-9]*x[0-9]*$/', $end_part)) {
  $size_parts = explode('x', $end_part);
  $size_int   = array_map('intval', $size_parts);
  $size       = array_filter($size_int, 'is_int');

  if (!empty($size) && 2 === count($size)) {
	$return = $size;
  }
}

If I can find some more time I'll submit a PR, but thought you should at least be aware of the issue.

Thank you for the awesome plugin and service.

Failing to sync all assets with `wp cloudinary sync`

After running wp cloudinary sync I'm getting:

$ wp cloudinary sync

╔═╗┬  ┌─┐┬ ┬┌┬┐┬┌┐┌┌─┐┬─┐┬ ┬  ╔═╗╦  ╦
║  │  │ ││ │ ││││││├─┤├┬┘└┬┘  ║  ║  ║
╚═╝┴─┘└─┘└─┘─┴┘┴┘└┘┴ ┴┴└─ ┴   ╚═╝╩═╝╩
Syncing assets
Syncing (1 of 14) : Logotype***[email protected]  7  % [==========>            ] 
0:00 / 0:00PHP Fatal error:  Uncaught Error: Cannot use object of type WP_Error as array in ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-media.php:2272

Stack trace:
#0  ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-sync.php(225): Cloudinary\Media->get_process_logs()
#1  ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/sync/class-push-sync.php(226): Cloudinary\Sync->log_sync_result()
#2  ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/traits/trait-cli.php(206): Cloudinary\Sync\Push_Sync->process_assets()
#3  ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/traits/trait-cli.php(164): Cloudinary\CLI->process_sync()
#4 ***/wp-content/plugins in ***/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-media.php on line 2272

Wordpress Version: 5.8.3
Cloudinary Plugin: 3.0.0
PHP: 7.4.20
Ubuntu: 18.04.3 LTS

Excessive backslash stripping when editing in Gutenberg

With WordPress 5.4.1 and version 2.0.3 of this plugin backslashes are stripped from the content.

Steps

  1. Create new post with Gutenberg editor.
  2. Enter a backslash in the content (i.e., This is a backslash: \.).
  3. Edit the post again.

Expected result

The content should be This is a backslash: \..

Actual result

The content is This is a backslash: ..

Notes

Disabling the call to wp_unslash() here fixes this issue:

public function pre_filter_rest_content( $response, $post, $request ) {
$context = $request->get_param( 'context' );
if ( 'edit' === $context ) {
$data = $response->get_data();
$content = wp_unslash( $data['content']['raw'] );
$data['content']['raw'] = $this->filter_out_local( $content );
$response->set_data( $data );
}
return $response;

I don't know if this was necessary for prior versions of WP but it causes issues now with block data containing escape sequences (\n, \r, \t, etc.). I'm still determining if there is a userland workaround.

Plugin won't activate with parse error.

Parse error: syntax error, unexpected '[' in /home/lewislev/public_html/bikeacrossamerica/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php on line 624

Wordpress 4.9.6

Not doing anything except installing and trying to activate.

Frustrating.

Cloudinary plugin not working when deployed in k8s

Hello.

Quick glance at set-up:
WordPress 5.7.2
Cloudinary plugin Version 2.7.2
PHP 7.4

When running in a docker container in my laptop, everything works fine. Images are uploaded to cloudinary no problem.
Image says "Uploading to new cloud name" and after a few moments, it works.

However, when I deploy the exact same set-up in Kubernetes. then the upload to Cloudinary doesnt work.
It is stuck in " Uploading to Cloudinary" until it eventually fails with no error message.

I was comparing the Apache logs from both these instances (The one running locally in my machine versus the logs coming from Kubernetes) & I noticed that there is one POST call that happens in the localdev one that never seems to be logged in the k8s deployment.
Namely, this

127.0.0.1 - - [18/May/2021:17:57:56 +0000] "POST /index.php?rest_route=/cloudinary/v1/queue HTTP/1.1" 200 28193 "https://localhost/index.php?rest_route=/cloudinary/v1/queue" "WordPress/5.7.2; https://localhost"

Anybody has any clue what might be happening here?

Plugin unable to handle chinese characters in image names

Hello, Cloudinary friends.

We recently installed version 3.0.0 of the plugin,
running on the docker image wordpress:5.8.1-php7.4-apache

The problem is that when images with a filename in chinese characters are uploaded, they don't get synced. It seems that the plugin removes all the characters except for the .extension and then it fails to upload.

Example here

This is not a blocker for us, but it does make the process more cumbersome, given that we need to rename the images before upload & then update the names on WordPress after.

Was wondering if you were aware of this issue and whether its realistic to expect a fix in the minor versions to come.

Thanks for your time & I'm available to troubleshoot this any time you want.

Feature request: Support multisite

My user stories for this feature request would be something like:

As a super admin I network activates the plugin, and, in the network admin dashboard, I add my Cloudinary access key.
Each subsite gets its own cloudinary folder path ( = subsite folder name ?).
In network admin I set the global transformations and sync settings for all subsites.

As an admin / editor on a subsite, I can only add and view images in my subsite cloudinary folder path.

Business case: I have 100+ subsites, and 300+ GB of images.

Using cloudinary_wordpress with polylang plugin causes error in the site Editor

Bug Description

When using cloudinary_wordpress with the Polylang plugin activated, the site Editor is failing.

Reproducing the bug:

  1. install and activate the Cloudinary WordPress Plugin and Polylang (https://wordpress.org/plugins/polylang/)
  2. Click on Appearance> Editor in WP Admin.
  3. Inspect the error (see screenshot).
    The Editor works fine when only one of the plugins is activated.

Screenshots

Screenshot 2023-08-12 154058

Additional context

I get this error in the Editor:

TypeError: Cannot read properties of undefined (reading 'cloudinary/gallery')
at http://localhost:8080/wp-includes/js/dist/block-editor.min.js?ver=ecf0dc5e749679c4f014:41:157232
at Array.forEach ()
at http://localhost:8080/wp-includes/js/dist/block-editor.min.js?ver=ecf0dc5e749679c4f014:41:157201
at Object.useMemo (http://localhost:8080/wp-includes/js/dist/vendor/react-dom.min.js?ver=18.2.0:10:115389)
at e.useMemo (http://localhost:8080/wp-includes/js/dist/vendor/react.min.js?ver=18.2.0:10:9875)
at iT (http://localhost:8080/wp-includes/js/dist/block-editor.min.js?ver=ecf0dc5e749679c4f014:41:156436)
at aT (http://localhost:8080/wp-includes/js/dist/block-editor.min.js?ver=ecf0dc5e749679c4f014:41:157431)
at http://localhost:8080/wp-includes/js/dist/edit-site.min.js?ver=b8d242e1600da32c2411:19:177275
at Tu (http://localhost:8080/wp-includes/js/dist/edit-site.min.js?ver=b8d242e1600da32c2411:19:177562)
at kt (http://localhost:8080/wp-includes/js/dist/vendor/react-dom.min.js?ver=18.2.0:10:47633)

System Report

I have generated the following system report from within the Cloudinary WordPress plugin:

{
"system_status": {
"home": "http://localhost:8080",
"wordpress": "6.3",
"php": "8.0.29",
"php_extensions": [
"Core",
"date",
"libxml",
"openssl",
"pcre",
"sqlite3",
"zlib",
"ctype",
"curl",
"dom",
"fileinfo",
"filter",
"ftp",
"hash",
"iconv",
"json",
"mbstring",
"SPL",
"PDO",
"pdo_sqlite",
"session",
"posix",
"Reflection",
"standard",
"SimpleXML",
"Phar",
"tokenizer",
"xml",
"xmlreader",
"xmlwriter",
"mysqlnd",
"apache2handler",
"bcmath",
"exif",
"gd",
"imagick",
"intl",
"mysqli",
"sodium",
"zip",
"Zend OPcache"
]
},
"theme_status": {
"name": "Frost",
"version": "1.0.4",
"author": "WP Engine",
"author_url": "https://wpengine.com/",
"child_theme": false
},
"plugins_report": {
"must_use": [],
"plugins": {
"polylang/polylang.php": {
"Name": "Polylang",
"PluginURI": "https://polylang.pro",
"Version": "3.4.5",
"Description": "Adds multilingual capability to WordPress",
"Author": "WP SYNTEX",
"AuthorURI": "https://polylang.pro",
"TextDomain": "polylang",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "5.8",
"RequiresPHP": "7.0",
"UpdateURI": "",
"Title": "Polylang",
"AuthorName": "WP SYNTEX",
"slug": "polylang/polylang.php"
},
"cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php": {
"Name": "Cloudinary",
"PluginURI": "https://cloudinary.com/documentation/wordpress_integration",
"Version": "3.1.3",
"Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress.",
"Author": "Cloudinary Ltd., XWP",
"AuthorURI": "https://cloudinary.com/",
"TextDomain": "cloudinary",
"DomainPath": "/languages",
"Network": false,
"RequiresWP": "",
"RequiresPHP": "",
"UpdateURI": "",
"Title": "Cloudinary",
"AuthorName": "Cloudinary Ltd., XWP",
"slug": "cloudinary-image-management-and-manipulation-in-the-cloud-cdn/cloudinary.php"
}
}
},
"config_report": {
"cloudinary_usage": "",
"cloudinary_last_usage": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-12T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16,
"limit": 25,
"used_percent": 0.64
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
},
"max_image_size": 10485760,
"max_video_size": 104857600
},
"cloudinary_connection_signature": "",
"cloudinary_settings_version": "3.1.3",
"cloudinary_status": "",
"cloudinary_history": {
"Free": {
"05-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-05T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"06-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-06T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"07-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-07T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"08-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-08T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"09-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-09T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"10-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-10T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
},
"11-08-2023": {
"plan": "Free",
"last_updated": "2023-08-11",
"date_requested": "2023-08-11T00:00:00Z",
"transformations": {
"usage": 0,
"credits_usage": 0
},
"objects": {
"usage": 671
},
"bandwidth": {
"usage": 0,
"credits_usage": 0
},
"storage": {
"usage": 167052577,
"credits_usage": 0.16
},
"requests": 0,
"credits": {
"usage": 0.16
},
"resources": 115,
"derived_resources": 556,
"media_limits": {
"image_max_size_bytes": 10485760,
"video_max_size_bytes": 104857600,
"raw_max_size_bytes": 10485760,
"image_max_px": 25000000,
"asset_max_total_px": 50000000
}
}
}
},
"rest_api_notices": "",
"sync_media": {
"auto_sync": "on",
"cloudinary_folder": "",
"offload": "dual_full"
},
"site_cache": {
"cache": {
"enable": "off",
"cld_purge_all": "",
"assets": {
"plugins": {
"enabled": "off",
"paths": {
"polylang": "",
"cloudinary": ""
}
},
"themes": {
"enabled": "off",
"paths": {
"frost": ""
}
},
"wordpress": {
"enabled": "off",
"paths": {
"wp_admin": "",
"wp_includes": ""
}
},
"content": {
"enabled": "off",
"paths": {
"wp_content": ""
}
}
}
}
},
"additional_domains": {
"cache_external": {
"external_assets": "off",
"uploadable_domains": ""
}
},
"media_display": {
"image_delivery": "on",
"image_optimization": "on",
"image_format": "auto",
"image_quality": "auto",
"image_freeform": "",
"svg_support": "off",
"crop_sizes": "",
"image_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg",
"video_delivery": "on",
"video_player": "wp",
"video_controls": "on",
"video_loop": "off",
"video_autoplay_mode": "off",
"video_optimization": "on",
"video_format": "auto",
"video_quality": "auto",
"video_freeform": "",
"video_preview": "",
"use_lazy_load": "on",
"lazy_threshold": "100px",
"lazy_custom_color": "rgba(153,153,153,0.5)",
"lazy_animate": "on",
"lazy_placeholder": "blur",
"dpr": "2X",
"lazyload_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg",
"enable_breakpoints": "off",
"pixel_step": 200,
"breakpoints": "",
"max_width": 2048,
"min_width": 200,
"breakpoints_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg"
},
"gallery": {
"transition": "fade",
"aspectRatio": "3:4",
"navigation": "always",
"zoom": true,
"carouselLocation": "top",
"carouselOffset": 5,
"carouselStyle": "thumbnails",
"displayProps": {
"mode": "classic",
"columns": 1
},
"indicatorProps": {
"shape": "round"
},
"themeProps": {
"primary": "#cf2e2e",
"onPrimary": "#000000",
"active": "#777777"
},
"zoomProps": {
"type": "popup",
"viewerPosition": "bottom",
"trigger": "click"
},
"thumbnailProps": {
"width": 64,
"height": 64,
"navigationShape": "radius",
"selectedStyle": "gradient",
"selectedBorderPosition": "all",
"selectedBorderWidth": 4,
"mediaSymbolShape": "round"
},
"cloudName": "headless-image",
"container": "",
"queryParam": "AA"
},
"cron_system": {
"cron_system": {
"enable_cron": "on",
"tasks": []
}
},
"setup": {
"reporting": {
"enable_report": "on"
}
},
"extensions": {
"media-library": "off"
}
},
"debug_log": [
"Debug log is empty"
]
}

Feature request: Use only for image selection

Howdy! I was curious if there was either a current way or interest in a pull request, allowing the plugin to be used only for the image selection portion?

For clarity, we have a Wordpress site which uses an asset library that we manage mutations for in another way. We do not want to allow Wordpress to upload/mutate these assets, and thus we just want to use the brilliant read functionality.

Thanks in advance for response

Cloudinary URLs for WPGraphQL Yoast SEO Addon

I know there are other issues already created for Cloudinary URLs populating correctly for WPGraphQL, but I think there's a subtle difference in what I'm facing (not pulling images from the content or raw HTML).

I'm using the WPGraphQL Yoast SEO Addon to query SEO data from the Yoast general settings and individual Post/Page Yoast settings.

When I set up a Facebook social image in the Yoast general settings, I get a WordPress-based URL instead of a Cloudinary URL.

In addition to that, when I set the Facebook or Twitter images on a specific Post/Page, I get null for the opengraphImage result and a WordPress URL for the twitterImage result.

Existing media keeps status "copying to folder"

Existing media won't upload to Cloudinary after changing the "Cloudinary folder path". New media is uploading fine and showing up in Cloudinary.

After changing the "Cloudinary folder path" value in the media settings the public_id value of an existing asset json meta data keeps returning an old value. In the media library all existing assets have the status "Copying to folder ..."

In the Cloudinary plugin media settings the bulk sync options keeps the status "syncing" for several days.

Bug Report: Cloudinary Version 3.0.2 - cloudinary.openMediaLibrary is not a function

Hi Cloudinary team,

Just wanted to report an issue I had on my website with the latest version released.

Steps to reproduce the bug:

  • Path: Products > Attributes > Edit any existing attribute > Upload/Add Image > Select Cloudinary Tab
  • State: I have infinite loading and a error on dev console cloudinary.openMediaLibrary is not a function

Debugging it hightlights the next line so you can have easily context:

2022-03-28 22 30 58

PD: I have rolled back to a stable version 2.7.6 which is working as expected so I'm good about when it could be fixed.

Thanks in advance for such a great and useful plugin!

Thumbnails not working

No images are shown on the blog after installing the Cloudinary plugin and syncing all the assets to Cloudinary, the Wordpress theme we have uses Wordpress thumbnails but it seems that the plugin doesn't implement this part?

Here are some of the thumbnail functions we use on the theme:

  • has_post_thumbnail()
  • the_post_thumbnail_url()
  • get_post_thumbnail_id()

I couldn't find anything in the documentation related to this subject.

Wordpress Version: 5.7.1
Cloudinary Plugin: 2.7.1
PHP: 7.4.1
Ubuntu: 18.04.3 LTS
Vagrant: 2.2.9

Proper image urls don't come through WPGraphQL

My image URLs aren't coming through properly via WPGraphQL. They’re fine in the REST API though. But this is a big problem for anyone using WordPress headlessly with WPGraphQL, which is a pretty popular and widely used plugin for implementing graphql. When I downgrade the plugin to version 2.7.6 they come through as expected.

I see two similar issues reported here.
https://www.higithub.com/wp-graphql/issue/wp-graphql/2192
#670

I’ve got a post with an image inserted into the content via the image block. I’ve also got an image being added through an ACF image field. The same thing is happening with both.

Version 3.0.1 WPGraphQL output:
https://ibb.co/D1TkR6g

Version 2.7.6 WPGraphQL output:
https://ibb.co/Z80w3dC

Version 3.0.1 REST API output for the post:
https://ibb.co/JcmNzX9

Version 3.0.1 REST API output for the ACF image:
https://ibb.co/nb2PWpp

You’ll probably ask for the system report, so here they are for both versions.
System report when version 2.7.6 is installed:
{ "system_status": { "home": "https://wordpress-321502-2425626.cloudwaysapps.com", "wordpress": "5.9", "php": "7.4.27", "php_extensions": [ "Core", "date", "libxml", "openssl", "pcre", "zlib", "filter", "hash", "Reflection", "SPL", "session", "standard", "sodium", "cgi-fcgi", "mysqlnd", "PDO", "xml", "apcu", "bcmath", "bz2", "calendar", "ctype", "curl", "dba", "dom", "enchant", "mbstring", "FFI", "fileinfo", "ftp", "gd", "gettext", "gmp", "iconv", "igbinary", "imagick", "imap", "intl", "json", "exif", "mongodb", "msgpack", "mysqli", "odbc", "pdo_dblib", "PDO_Firebird", "pdo_mysql", "PDO_ODBC", "pdo_pgsql", "pdo_sqlite", "pgsql", "apc", "posix", "readline", "redis", "shmop", "SimpleXML", "soap", "sockets", "sqlite3", "sysvmsg", "sysvsem", "sysvshm", "tidy", "tokenizer", "xmlreader", "xmlrpc", "xmlwriter", "xsl", "zip", "Phar", "memcached", "Zend OPcache" ] }, "theme_status": { "name": "Twenty Twenty-One", "version": "1.4", "author": "the WordPress team", "author_url": "https://wordpress.org/", "child_theme": false }, "plugins_report": { "must_use": [], "plugins": [ { "Name": "Advanced Custom Fields", "PluginURI": "https://www.advancedcustomfields.com", "Version": "5.11.4", "Description": "Customize WordPress with powerful, professional and intuitive fields. <cite>By <a href=\"https://www.advancedcustomfields.com\">Delicious Brains</a>.</cite>", "Author": "<a href=\"https://www.advancedcustomfields.com\">Delicious Brains</a>", "AuthorURI": "https://www.advancedcustomfields.com", "TextDomain": "acf", "DomainPath": "/lang", "Network": false, "RequiresWP": "", "RequiresPHP": "", "UpdateURI": "", "Title": "<a href=\"https://www.advancedcustomfields.com\">Advanced Custom Fields</a>", "AuthorName": "Delicious Brains" }, { "Name": "Cloudinary", "PluginURI": "https://cloudinary.com/documentation/wordpress_integration", "Version": "STABLETAG", "Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress. <cite>By <a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>.</cite>", "Author": "<a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>", "AuthorURI": "https://cloudinary.com/", "TextDomain": "cloudinary", "DomainPath": "/languages", "Network": false, "RequiresWP": "", "RequiresPHP": "", "UpdateURI": "", "Title": "<a href=\"https://cloudinary.com/documentation/wordpress_integration\">Cloudinary</a>", "AuthorName": "Cloudinary Ltd., XWP" }, { "Name": "WP Gatsby", "PluginURI": "", "Version": "2.2.1", "Description": "Optimize your WordPress site to be a source for Gatsby sites. <cite>By <a href=\"https://gatsbyjs.org\">GatsbyJS, Jason Bahl, Tyler Barnes</a>.</cite>", "Author": "<a href=\"https://gatsbyjs.org\">GatsbyJS, Jason Bahl, Tyler Barnes</a>", "AuthorURI": "https://gatsbyjs.org", "TextDomain": "wp-gatsby", "DomainPath": "/languages/", "Network": false, "RequiresWP": "5.4.2", "RequiresPHP": "7.3", "UpdateURI": "", "Title": "WP Gatsby", "AuthorName": "GatsbyJS, Jason Bahl, Tyler Barnes" }, { "Name": "WPGraphQL for Advanced Custom Fields", "PluginURI": "https://wpgraphql.com/acf", "Version": "0.5.3", "Description": "Adds Advanced Custom Fields to the WPGraphQL Schema <cite>By <a href=\"https://www.wpgraphql.com\">WPGraphQL, Jason Bahl</a>.</cite>", "Author": "<a href=\"https://www.wpgraphql.com\">WPGraphQL, Jason Bahl</a>", "AuthorURI": "https://www.wpgraphql.com", "TextDomain": "wp-graphql-acf", "DomainPath": "/languages", "Network": false, "RequiresWP": "", "RequiresPHP": "7.0", "UpdateURI": "", "Title": "<a href=\"https://wpgraphql.com/acf\">WPGraphQL for Advanced Custom Fields</a>", "AuthorName": "WPGraphQL, Jason Bahl" }, { "Name": "WP GraphQL", "PluginURI": "https://github.com/wp-graphql/wp-graphql", "Version": "1.6.12", "Description": "GraphQL API for WordPress <cite>By <a href=\"http://www.wpgraphql.com\">WPGraphQL</a>.</cite>", "Author": "<a href=\"http://www.wpgraphql.com\">WPGraphQL</a>", "AuthorURI": "http://www.wpgraphql.com", "TextDomain": "wp-graphql", "DomainPath": "/languages/", "Network": false, "RequiresWP": "5.0", "RequiresPHP": "7.1", "UpdateURI": "", "Title": "<a href=\"https://github.com/wp-graphql/wp-graphql\">WP GraphQL</a>", "AuthorName": "WPGraphQL" } ] }, "config_report": { "cloudinary": [], "about": [], "usage": null, "last_usage": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-06T00:00:00Z", "transformations": { "usage": 39, "credits_usage": 0.04 }, "objects": { "usage": 69 }, "bandwidth": { "usage": 230206, "credits_usage": 0 }, "storage": { "usage": 133372880, "credits_usage": 0.12 }, "credits": { "usage": 0.16, "limit": 25, "used_percent": 0.64 }, "requests": 24, "resources": 37, "derived_resources": 32, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 }, "max_image_size": 10485760, "max_video_size": 104857600 }, "signature": "f8e69444c599d82ba96258c7ed692bd5", "version": null, "status": { "status": "ok" }, "media_display": { "image_optimization": "on", "image_format": "auto", "image_quality": "auto", "enable_breakpoints": "on", "breakpoints": "3", "bytes_step": "200", "max_width": "2048", "min_width": "800", "image_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg", "video_player": "wp", "video_controls": "on", "video_loop": "off", "video_autoplay_mode": "off", "video_limit_bitrate": "off", "video_bitrate": "500", "video_optimization": "on", "video_format": "auto", "video_quality": "auto" }, "setup": { "enable_report": "on" }, "sync_media": { "auto_sync": "on", "cloudinary_folder": ".", "offload": "dual_full" }, "gallery": { "transition": "fade", "aspectRatio": "3:4", "navigation": "always", "zoom": true, "carouselLocation": "top", "carouselOffset": 5, "carouselStyle": "thumbnails", "displayProps": { "mode": "classic", "columns": 1 }, "indicatorProps": { "shape": "round" }, "themeProps": { "primary": "#cf2e2e", "onPrimary": "#000000", "active": "#777777" }, "zoomProps": { "type": "popup", "viewerPosition": "bottom", "trigger": "click" }, "thumbnailProps": { "width": 64, "height": 64, "navigationShape": "radius", "selectedStyle": "gradient", "selectedBorderPosition": "all", "selectedBorderWidth": 4, "mediaSymbolShape": "round" }, "cloudName": "nexvel-solutions", "container": "" } } }
System report when version 3.0.1 is installed:
{ "system_status": { "home": "https://wordpress-321502-2425626.cloudwaysapps.com", "wordpress": "5.9", "php": "7.4.27", "php_extensions": [ "Core", "date", "libxml", "openssl", "pcre", "zlib", "filter", "hash", "Reflection", "SPL", "session", "standard", "sodium", "cgi-fcgi", "mysqlnd", "PDO", "xml", "apcu", "bcmath", "bz2", "calendar", "ctype", "curl", "dba", "dom", "enchant", "mbstring", "FFI", "fileinfo", "ftp", "gd", "gettext", "gmp", "iconv", "igbinary", "imagick", "imap", "intl", "json", "exif", "mongodb", "msgpack", "mysqli", "odbc", "pdo_dblib", "PDO_Firebird", "pdo_mysql", "PDO_ODBC", "pdo_pgsql", "pdo_sqlite", "pgsql", "apc", "posix", "readline", "redis", "shmop", "SimpleXML", "soap", "sockets", "sqlite3", "sysvmsg", "sysvsem", "sysvshm", "tidy", "tokenizer", "xmlreader", "xmlrpc", "xmlwriter", "xsl", "zip", "Phar", "memcached", "Zend OPcache" ] }, "theme_status": { "name": "Twenty Twenty-One", "version": "1.4", "author": "the WordPress team", "author_url": "https://wordpress.org/", "child_theme": false }, "plugins_report": { "must_use": [], "plugins": [ { "Name": "Advanced Custom Fields", "PluginURI": "https://www.advancedcustomfields.com", "Version": "5.11.4", "Description": "Customize WordPress with powerful, professional and intuitive fields. <cite>By <a href=\"https://www.advancedcustomfields.com\">Delicious Brains</a>.</cite>", "Author": "<a href=\"https://www.advancedcustomfields.com\">Delicious Brains</a>", "AuthorURI": "https://www.advancedcustomfields.com", "TextDomain": "acf", "DomainPath": "/lang", "Network": false, "RequiresWP": "", "RequiresPHP": "", "UpdateURI": "", "Title": "<a href=\"https://www.advancedcustomfields.com\">Advanced Custom Fields</a>", "AuthorName": "Delicious Brains" }, { "Name": "Cloudinary", "PluginURI": "https://cloudinary.com/documentation/wordpress_integration", "Version": "3.0.1", "Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress. <cite>By <a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>.</cite>", "Author": "<a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>", "AuthorURI": "https://cloudinary.com/", "TextDomain": "cloudinary", "DomainPath": "/languages", "Network": false, "RequiresWP": "", "RequiresPHP": "", "UpdateURI": "", "Title": "<a href=\"https://cloudinary.com/documentation/wordpress_integration\">Cloudinary</a>", "AuthorName": "Cloudinary Ltd., XWP" }, { "Name": "WP Gatsby", "PluginURI": "", "Version": "2.2.1", "Description": "Optimize your WordPress site to be a source for Gatsby sites. <cite>By <a href=\"https://gatsbyjs.org\">GatsbyJS, Jason Bahl, Tyler Barnes</a>.</cite>", "Author": "<a href=\"https://gatsbyjs.org\">GatsbyJS, Jason Bahl, Tyler Barnes</a>", "AuthorURI": "https://gatsbyjs.org", "TextDomain": "wp-gatsby", "DomainPath": "/languages/", "Network": false, "RequiresWP": "5.4.2", "RequiresPHP": "7.3", "UpdateURI": "", "Title": "WP Gatsby", "AuthorName": "GatsbyJS, Jason Bahl, Tyler Barnes" }, { "Name": "WPGraphQL for Advanced Custom Fields", "PluginURI": "https://wpgraphql.com/acf", "Version": "0.5.3", "Description": "Adds Advanced Custom Fields to the WPGraphQL Schema <cite>By <a href=\"https://www.wpgraphql.com\">WPGraphQL, Jason Bahl</a>.</cite>", "Author": "<a href=\"https://www.wpgraphql.com\">WPGraphQL, Jason Bahl</a>", "AuthorURI": "https://www.wpgraphql.com", "TextDomain": "wp-graphql-acf", "DomainPath": "/languages", "Network": false, "RequiresWP": "", "RequiresPHP": "7.0", "UpdateURI": "", "Title": "<a href=\"https://wpgraphql.com/acf\">WPGraphQL for Advanced Custom Fields</a>", "AuthorName": "WPGraphQL, Jason Bahl" }, { "Name": "WP GraphQL", "PluginURI": "https://github.com/wp-graphql/wp-graphql", "Version": "1.6.12", "Description": "GraphQL API for WordPress <cite>By <a href=\"http://www.wpgraphql.com\">WPGraphQL</a>.</cite>", "Author": "<a href=\"http://www.wpgraphql.com\">WPGraphQL</a>", "AuthorURI": "http://www.wpgraphql.com", "TextDomain": "wp-graphql", "DomainPath": "/languages/", "Network": false, "RequiresWP": "5.0", "RequiresPHP": "7.1", "UpdateURI": "", "Title": "<a href=\"https://github.com/wp-graphql/wp-graphql\">WP GraphQL</a>", "AuthorName": "WPGraphQL" } ] }, "config_report": { "cloudinary_usage": "", "cloudinary_last_usage": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-06T00:00:00Z", "transformations": { "usage": 48, "credits_usage": 0.05 }, "objects": { "usage": 78 }, "bandwidth": { "usage": 243372, "credits_usage": 0 }, "storage": { "usage": 138440700, "credits_usage": 0.13 }, "credits": { "usage": 0.18, "limit": 25, "used_percent": 0.72 }, "requests": 28, "resources": 38, "derived_resources": 40, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 }, "max_image_size": 10485760, "max_video_size": 104857600 }, "cloudinary_connection_signature": "f8e69444c599d82ba96258c7ed692bd5", "cloudinary_settings_version": "3.0.1", "cloudinary_status": { "status": "ok" }, "cloudinary_history": { "05-02-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-05T00:00:00Z", "transformations": { "usage": 33, "credits_usage": 0.03 }, "objects": { "usage": 63 }, "bandwidth": { "usage": 230206, "credits_usage": 0 }, "storage": { "usage": 124655723, "credits_usage": 0.12 }, "credits": { "usage": 0.15 }, "requests": 24, "resources": 36, "derived_resources": 27, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "04-02-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-04T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "03-02-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-03T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "02-02-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-02T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "01-02-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-02-01T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "31-01-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-01-31T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } }, "30-01-2022": { "plan": "Free", "last_updated": "2022-02-05", "date_requested": "2022-01-30T00:00:00Z", "transformations": { "usage": 0, "credits_usage": 0 }, "objects": { "usage": 0 }, "bandwidth": { "usage": 0, "credits_usage": 0 }, "storage": { "usage": 0, "credits_usage": 0 }, "credits": { "usage": 0 }, "requests": 0, "resources": 0, "derived_resources": 0, "media_limits": { "image_max_size_bytes": 10485760, "video_max_size_bytes": 104857600, "raw_max_size_bytes": 10485760, "image_max_px": 25000000, "asset_max_total_px": 50000000 } } }, "sync_media": { "auto_sync": "on", "cloudinary_folder": "", "offload": "dual_full" }, "site_cache": { "cache": { "enable": "off", "cld_purge_all": "", "assets": { "plugins": { "enabled": "off", "paths": { "acf": "", "cloudinary": "", "wp-gatsby": "", "wp-graphql-acf": "", "wp-graphql": "" } }, "themes": { "enabled": "off", "paths": { "twentytwentyone": "" } }, "wordpress": { "enabled": "off", "paths": { "wp_admin": "", "wp_includes": "" } }, "content": { "enabled": "off", "paths": { "wp_content": "" } } } } }, "additional_domains": { "cache_external": { "external_assets": "off", "uploadable_domains": "" } }, "media_display": { "image_optimization": "on", "image_format": "auto", "image_quality": "auto", "enable_breakpoints": "on", "breakpoints": "3", "bytes_step": "200", "max_width": "2048", "min_width": "800", "image_freeform": "", "video_player": "wp", "video_controls": "on", "video_loop": "off", "video_autoplay_mode": "off", "video_limit_bitrate": "off", "video_bitrate": "500", "video_optimization": "on", "video_format": "auto", "video_quality": "auto", "video_freeform": "", "svg_support": "off", "image_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg", "video_preview": "", "use_lazy_load": "on", "lazy_threshold": "100px", "lazy_custom_color": "rgba(153,153,153,0.5)", "lazy_animate": "on", "lazy_placeholder": "blur", "lazyload_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg", "pixel_step": 200, "dpr": "2X", "breakpoints_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg" }, "gallery": { "transition": "fade", "aspectRatio": "3:4", "navigation": "always", "zoom": true, "carouselLocation": "top", "carouselOffset": 5, "carouselStyle": "thumbnails", "displayProps": { "mode": "classic", "columns": 1 }, "indicatorProps": { "shape": "round" }, "themeProps": { "primary": "#cf2e2e", "onPrimary": "#000000", "active": "#777777" }, "zoomProps": { "type": "popup", "viewerPosition": "bottom", "trigger": "click" }, "thumbnailProps": { "width": 64, "height": 64, "navigationShape": "radius", "selectedStyle": "gradient", "selectedBorderPosition": "all", "selectedBorderWidth": 4, "mediaSymbolShape": "round" }, "cloudName": "nexvel-solutions", "container": "", "queryParam": "AA" }, "setup": { "enable_report": "on", "reporting": { "enable_report": "on" } }, "extensions": { "media-library": "off" } } }

Media won't load up in Media Library

The plugin seems to be currently in beta since there are as many bugs. These are :

  1. In 2.1.0 plugin, Admin panel Media Library working fine and wp media library images are also visible and load but in 2.2.0 no images load or displayed in Media Library.
    Screenshot_2020-08-03-10-35-18-085_com android chrome

  2. after performing the Bulk Sync, it displayed all media are synced but many images are yet not sync and no matter what you do, it won't sync. Due to this images on post won't displayed when user visited.

  3. seems little bit unstable differ images are attached to differ post.

  4. some issues with classic-editor.

I'm a big fan of Cloudinary and when I see wp plugin, feel quite amazed but it won't work at last disappoint me. Please make.it happen, make it stable 💯 Thanks ❤

Cloudinary v3.0.4 incompatible with Elementor plugin when saving Chinese text

Bug Description

Editing page in Elementor with Cloudinary v3.0.4 installed results in Chinese text not showing well (slash is stripped).

Expected Behaviour

See below

Steps to reproduce

  1. Deactivate all plugins except Elementor v3.6.6 and Cloudinary v3.0.4
  2. Edit any page using Elementor and type in a mixture of English and Chinese characters, for example: "Chinese 中文".
  3. Save the page while in Elementor editor view
  4. Open the saved page

Expect: text shows "Chinese 中文"
Actual: text shows "Chinese U4e2du6587". Note that unicode for 中文 is \u4e2d\u6587

Also note that if an Elementor page template was saved, saving any Chinese text results in the whole page becoming blank - all page content is lost.

Screenshots

See video: https://user-images.githubusercontent.com/12426535/172898656-3f3a40cb-3e4a-4a12-8e45-22fb224d594c.mp4

Additional context

  • WordPress version:
  • Plugin version: 3.0.4
  • PHP version: 7.4.3

Note that this issue doesn't appear with Cloudinary 3.0.3.

Overflow hidden in midia library navigation

I can not navigate through folders or through the list of images in the media library. Even opening the iframe src (https: //cloudinary.com/console/media_library/cms? timestamp = 1510861923 & mode = wp_gallery & plugin_version = 1.1.6 & signature = ...)

Inspecting, I can see that:

#wrapper {
    position: relative;
    overflow: hidden; <<<<
}

Wordpress plugin out of date on Wordpress Plugin store

Currently the plugin on Wordpress is only listed as being compatible with an older version of Wordpress:

Requires: 3.0 or higher
Compatible up to: 4.0.10
Last Updated: 1 year ago
Active Installs: 3,000+

Link: https://wordpress.org/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/
We have some customers that want to use it - can you update the Wordpress plugin site.

Specifically we would like this to work on 4.41 version of wordpress.

Responsive images not working

Turning on the "Enable responsive images." toggle doesn't seem to do anything, in fact, it actually removes the srcset and sizes attributes provided by default by Wordpress.

I've tried with wp_get_attachment_image() and with the_post_thumbnail() the latter is the function we currently use on the theme and it generates the srcset and sizes correctly but I need to tweak them.

What's the recommended way to render the img tags on a theme so this feature works?

Wordpress Version: 5.7.2
Cloudinary Plugin: 2.7.3
PHP: 7.4.1
Ubuntu: 18.04.3 LTS
Vagrant: 2.2.9

PHPCompatibiltyWP missing from PHPCS config file

Bug Description

A testVersion configuration value in the PHPCS config file was uncommented by @pereirinha, but it still doesn't have any effect until the PHPCompatibility or PHPCompatibilityWP rule is added. The line was previously commented out because it wasn't having any effect then.

Expected Behaviour

The PHPCS config file should contain something like:

<!-- Rules: Check PHP version compatibility - see
		https://github.com/PHPCompatibility/PHPCompatibilityWP -->
<rule ref="PHPCompatibilityWP"/>

Steps to reproduce

PHPCompatibilityWP has been added as a dev dependency (good), but it isn't in the PHPCS config where it would be expected to be found along with the other ruleset references.

See https://github.com/Parsely/wp-parsely/blob/d0384362e1815aa557a5447b738d8bac58dbcb80/.phpcs.xml.dist#L30-L35 as an example.

Fatal error on regenerating thumbnails through WP CLI

Running wp media regenerate on the server while the Cloudinary plugin is activated will yield the following fatal error:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Cloudinary\Media::manage_sizes(), 2 passed in /sites/{-redacted-}/wp-includes/class-wp-hook.php on line 292 and exactly 3 expected in /sites/{-redacted-}/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-media.php:2193
Stack trace:
#0 /sites/{-redacted-}/wp-includes/class-wp-hook.php(292): Cloudinary\Media->manage_sizes(Array, Array)
#1 /sites/{-redacted-}/wp-includes/plugin.php(212): WP_Hook->apply_filters(Array, Array)
#2 phar:///usr/local/bin/wp/vendor/wp-cli/media-command/src/Media_Command.php(828): apply_filters('intermediate_im...', Array, Array)
#3 phar:///usr/local/bin/wp/vendor/wp-cli/media-command/src/Media_Command.php(757): Media_Command->get_intermediate_sizes(false, Array)
#4 phar:///usr/local/bin/wp/vendor/wp-cli/media-command/src/Media_Command.php(658): Media_Command->get_intermediate_image_sizes_for_attachment('/sites/percprod...', false, Array)
#5 phar:///usr/local/bin/wp/vendor/wp-cli/ in /sites/{-redacted-}/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-media.php on line 2193

Wordpress 5.7.2
Cloudinary Plugin 2.7.1

Can't add an image from Cloudinary to the Image Block

I am using WordPress 5.8.3 with the latest version of the Cloudinary plugin. I also have the Cloudinary DAM extension installed.

It does not look like you can insert an image from Cloundary onto the image block.

Steps to reproduce:

  1. Add the Image block to a page
  2. Click on "Media Library"
  3. Click on the "Cloudinary" tab
  4. Click on the image you want to use
  5. There is no Insert button

The expectation is that I can insert an image from Cloundary to be used on default WordPress blocks.

Enhancement - Global _wp_attached_file protocol option

I see there is a way on a per upload basis to set the protocol that is stored with the image url in _wp_attached_file.

Unfortunately this is per upload, and it defaults to HTTP.

I've written a little snippet to jump in on update_attached_file and modify the file url, so that even if user's don't make the HTTPS selection, it changes it anyways.

add_action( 'update_attached_file', function ($file) {
    if(stripos($file, 'http://res.cloudinary.com') !== FALSE){
        $file = str_replace('http://res.cloudinary.com', 'https://res.cloudinary.com', $file);
    }
    return $file;
});

It wouldn't surprise me if there is a need for some organizations to want to define the Protocol on each upload, but I also think it would be really nice to have an 'on every upload' option.

For those of us who would prefer a global setting for this, I have a proposition.

Add a Protocol setting, on the Wordpress side, under the main Cloudinary Settings screen

Image Protocol

  1. Define on each upload
  2. Always HTTPS
  3. Always HTTP

Based on these settings, we can either leave the functionality as it is, or optionally jump in and toggle it, using something similar to the above, regardless of what user's select when uploading.

After we hammer out any thoughts/details, I'd be happy to work on this and contribute it back.

Deprecated media_buttons_context hook conflicts with other plugins

It seems the media_buttons_context hook has been deprecated . WordPress developer docs says to use media_buttons action instead. This also seems to trigger a bug if other plugins use the same deprecated hook, making the other plugins custom media buttons inserted with the media_buttons_context hook to be repeated several times right beside the "Cloudinary Upload/Insert" button.

My theme also uses the media_buttons_context hook to place a media button, and that was causing the button to be repeated beside the "Cloudinary Upload/Insert" button too. Although I've managed to solve part of the issue by fixing my theme's code, I also use another plugin that uses the same hook, and then the bug was rising again.

So digging the cloudinary plugin code I got to manually change it to the following bellow, what successfully solved all the issues mentioned before:

Code from cloudinary.php L. 494 - 502

function media_cloudinary($editor_id = 'content') {
  $context = __('Cloudinary Upload/Insert');
  $xdmremote = $this->prepare_cloudinary_media_lib_url("wp_post");
  if (!$xdmremote) return ""; 

  echo $this->init_media_lib_integration($xdmremote, false) .
       '<a href="#" class="cloudinary_add_media" id="' . esc_attr( $editor_id ) . '-add_media" ' .
       'title="' . esc_attr__( 'Add Media from Cloudinary' ) . '">' . $context . '</a><span class="cloudinary_message"></span>';
  add_action('media_buttons', 'media_cloudinary');
}

P.S I'm not a developer, so I can't guarantee the fix above is the right way to make it, but it seems to comply with WordPress most recent version.

Some missing thumbnails in Media Library

A few images are not syncing with Cloudinary.

As a result no thumbnail is displaying in grid mode (in list mode I see the local WP thumbnail) and when attempting to embed in a post I can only embed the local version.

In the Media library I see them marked as "Uploading to new cloud name". The images that have synced are marked as "Updating breakpoints".

            "_cloudinary_v2": {
                "_plugin_version": "2.7.4",

                "_process_log": []
            },

        "version": "2.7.4",
        "status": {
            "status": "ok"
        },

        "sync_media": {
            "auto_sync": "on",
            "cloudinary_folder": ".",
            "offload": "dual_full"
        },

Possibly relevant plugins in use:
"Name": "Photo Engine (WP/LR Sync)",
"PluginURI": "https://meowapps.com",
"Version": "6.0.8",

"Name": "Smush",
"PluginURI": "http://wordpress.org/plugins/wp-smushit/",
"Version": "3.8.7",

Assets marked as Unsupported for no reason

I haven't been able to sync my assets to Cloudinary I've tried the Auto sync method in the UI and also cli command but no luck, this is the output of the cli:

Analyzing 12 assets:
12 Analyzed |  100% [====================================================================================================================================================================================================================================] 0:00 / 0:00

Synced      : 2
Un-synced   : 0
Unsupported : 10

The 2 synced files are files I uploaded through the Wordpress admin after installing the plugin but the others are files that were already there when I installed the plugin. All the 10 files are valid jpgs so not sure they are marked as unsupported.

Wordpress Version: 5.7.1
Cloudinary Plugin: 2.7.1
PHP: 7.4.1
Ubuntu: 18.04.3 LTS
Vagrant: 2.2.9

This is failing and returning notice error

Hello this function seems to be broken in our project.

return ! empty( $thing ) && is_string( $thing ) && in_array( ltrim( $thing )[0], array( '{', '[' ), true );

it returns this notice in the start of JSON

<br />
<b>Notice</b>:  Uninitialized string offset: 0 in <b>/var/www/html/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-utils.php</b> on line <b>518</b><br />

We fixed it like this:

         */
        public static function looks_like_json( $thing ) {
//              return ! empty( $thing ) && is_string( $thing ) && in_array( ltrim( $thing )[0], array( '{', '[' ), true );
              if (is_string($thing)) {
                  $trimmedThing = ltrim($thing);
                  return !empty($thing) && strlen($trimmedThing) > 0 && in_array($trimmedThing[0], ['{', '['], true);
              } else {
                  return false; // or handle the case when $thing is not a string
              }
        }

Wordpress "Events Manager" plugin - Image size with crop

The Events Manager Wordpress plugin (https://wordpress.org/plugins/events-manager/) requests images with the shortcode #_EVENTIMAGE{x,y} where x and y represent the image size. It works with Cloudinary if only one value is supplied, when both are given the image is scaled out of proportion with c_scale.

I created a code for a custom shortcode #_CUSTOMEVENTIMAGE{100,100} that uses c_fill in the Cloudinary URL when both values are supplied, allowing to fill the dimension provided with the image by cropping it.

The project can be found here: https://github.com/ArboLife/Events-Manager-Cloudinary

Not sure if new issue.... But New to me....

Has anyone ran across this issue? I'm not terribly familiar with this type of issue and was hoping there was an easy fix. I've been through the gambit trying to find a freaking plugin that can assist in giving my Google Bucket access to my damn media. After a lot of unsuccessful tries, cloudinary seems it may be my answer. But failure to launch occurred when activating the plugin and punching in the required information.

=============================================================

When seeking help with this issue, you may be asked for some of the following information:
WordPress version 5.8.2
Current theme: CSO Child Theme (version 1.0.0) Astra Theme v.3.6.3
Current plugin: Cloudinary (version 3.0.0)
PHP version 8.0.13

=============================================================

Line 433 Function: 
	/**
	 * Is the media item size allowed to be uploaded.
	 * Checks against the account limits.
	 *
	 * @param int $attachment_id The attachment ID.
	 *
	 * @return bool
	 */
	public function is_oversize_media( $attachment_id ) {
		static $is_oversize = array();

		if ( isset( $is_oversize[ $attachment_id ] ) ) {
			return $is_oversize[ $attachment_id ];
		}

		$file_size = $this->get_attachment_file_size( $attachment_id );
		$max_size  = ( wp_attachment_is_image( $attachment_id ) ? 'image_max_size_bytes' : 'video_max_size_bytes' );
		$limit     = $this->plugin->components['connect']->usage['media_limits'][ $max_size ];

		$is_oversize[ $attachment_id ] = $file_size > $limit;

		if ( $is_oversize[ $attachment_id ] ) {
			$max_size    = ( wp_attachment_is_image( $attachment_id ) ? 'image_max_size_bytes' : 'video_max_size_bytes' );
			$max_size_hr = size_format( $this->plugin->components['connect']->usage['media_limits'][ $max_size ] );
			// translators: variable is file size.
			$message = sprintf( __( 'File size exceeds the maximum of %s. This media asset will be served from WordPress.', 'cloudinary' ), $max_size_hr );
			update_post_meta( $attachment_id, Sync::META_KEYS['sync_error'], $message );
		}

		return $is_oversize[ $attachment_id ];
	}


=============
Error Details

An error of type E_ERROR was caused in line 433 of the file wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-media.php. Error message: Uncaught TypeError: Cannot access offset of type string on string in wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-media.php:433
Stack trace:
#0 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(1209): Cloudinary\Media->is_oversize_media('805')
#1 [internal function]: Cloudinary\Sync->generate_file_signature('805')
#2 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(705): call_user_func(Array, '805')
#3 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(755): Cloudinary\Sync->generate_type_signature('file', '805')
#4 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(281): Cloudinary\Sync->sync_base('805')
#5 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(805): Cloudinary\Sync->generate_signature('805', true)
#6 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-sync.php(783): Cloudinary\Sync->get_sync_type('805')
#7 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-media.php(1554): Cloudinary\Sync->maybe_prepare_sync('805')
#8 wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn1/php/class-media.php(1606): Cloudinary\Media->cloudinary_id('805')
#9 wp-includes/class-wp-hook.php(303): Cloudinary\Media->filter_downsize(false, '805', 'full')
#10 wp-includes/plugin.php(189): WP_Hook->apply_filters(false, Array)
#11 wp-includes/media.php(207): apply_filters('image_downsize', false, '805', 'full')
#12 wp-includes/media.php(953): image_downsize('805', 'full')
#13 wp-includes/media.php(1131): wp_get_attachment_image_src('805', 'full', false)
#14 wp-includes/general-template.php(936): wp_get_attachment_image_url('805', 'full')
#15 wp-includes/general-template.php(977): get_site_icon_url(512, '', 0)
#16 wp-includes/general-template.php(3223): has_site_icon()
#17 wp-includes/class-wp-hook.php(303): wp_site_icon('')
#18 wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters(NULL, Array)
#19 wp-includes/plugin.php(470): WP_Hook->do_action(Array)
#20 wp-admin/admin-header.php(147): do_action('admin_head')
#21 wp-admin/plugins.php(603): require_once('/home/test/...')
#22 {main}
thrown

PHP 8.1 support

Hi there,

when using this Plugin on a Server with PHP 8.1.1, it throws this error:

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /var/www/vhosts/.../httpdocs/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/class-admin.php on line 398

Invalid file parameter. Make sure your file parameter does not include '[]'

Every image we attempt to add to the WP Media Manager, we get this error message. Has anyone else experienced this? I've got the Cloudinary Report if someone could help me out.

Invalid file parameter. Make sure your file parameter does not include '[]'

Screen Shot 2021-04-12 at 12 59 46 PM

{
    "system_status": {
        "home": "https://dev-he-thebestschools-org-sonic.pantheonsite.io",
        "wordpress": "5.4",
        "php": "7.3.27",
        "php_extensions": [
            ...
        ]
    },
    "theme_status": {
        ...
    },
    "plugins_report": {
        "must_use": [
            ...
        ],
        "plugins": [
            {
                "Name": "Cloudinary",
                "PluginURI": "https://cloudinary.com/documentation/wordpress_integration",
                "Version": "2.7.0",
                "Description": "With the Cloudinary plugin, you can upload and manage your media assets in the cloud, then deliver them to your users through a fast content delivery network, improving your website\u2019s loading speed and overall user experience. Apply multiple transformations and take advantage of a full digital asset management solution without leaving WordPress. <cite>By <a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>.</cite>",
                "Author": "<a href=\"https://cloudinary.com/\">Cloudinary Ltd., XWP</a>",
                "AuthorURI": "https://cloudinary.com/",
                "TextDomain": "cloudinary",
                "DomainPath": "/languages",
                "Network": false,
                "RequiresWP": "",
                "RequiresPHP": "",
                "Title": "<a href=\"https://cloudinary.com/documentation/wordpress_integration\">Cloudinary</a>",
                "AuthorName": "Cloudinary Ltd., XWP"
            },
            ...
        ]
    },
    "media_report": {
        "4124": {
            "width": 512,
            "height": 512,
            "file": "2021/04/favicon.png",
            "sizes": {
                "medium": {
                    "file": "favicon-300x300.png",
                    "width": 300,
                    "height": 300,
                    "mime-type": "image/png"
                },
                "thumbnail": {
                    "file": "favicon-150x150.png",
                    "width": 150,
                    "height": 150,
                    "mime-type": "image/png"
                }
            },
            "image_meta": {
                "aperture": "0",
                "credit": "",
                "camera": "",
                "caption": "",
                "created_timestamp": "0",
                "copyright": "",
                "focal_length": "0",
                "iso": "0",
                "shutter_speed": "0",
                "title": "",
                "orientation": "0",
                "keywords": []
            },
            "_cloudinary_v2": {
                "_sync_signature": {
                    "0": "",
                    "upgrade": "c4ca4238a0b923820dcc509a6f75849b",
                    "download": "d41d8cd98f00b204e9800998ecf8427e",
                    "file": "f50c73d00fda2bd6d78ce4082e70f008",
                    "storage": "3bf592cee4ad21eda9258dc36c3e5207",
                    "breakpoints": "d751713988987e9331980363e24189ce"
                },
                "_cloudinary_storage": "cld",
                "_process_log": {
                    "cloud_name": {
                        "errors": {
                            "400": [
                                "Invalid file parameter. Make sure your file parameter does not include '[]'"
                            ]
                        },
                        "error_data": []
                    }
                }
            },
            "all_meta": {
                "_wp_attached_file": [
                    "https://res.cloudinary.com/highereducation/images/v1/TheBestSchools.org-Sonic/favicon/favicon.png"
                ],
                "_sync_signature": [
                    "a:3:{i:0;s:0:\"\";s:7:\"upgrade\";s:32:\"c4ca4238a0b923820dcc509a6f75849b\";s:8:\"download\";s:32:\"d41d8cd98f00b204e9800998ecf8427e\";}"
                ],
                "_wp_attachment_metadata": [
                    "a:6:{s:5:\"width\";i:512;s:6:\"height\";i:512;s:4:\"file\";s:19:\"2021/04/favicon.png\";s:5:\"sizes\";a:2:{s:6:\"medium\";a:4:{s:4:\"file\";s:19:\"favicon-300x300.png\";s:5:\"width\";i:300;s:6:\"height\";i:300;s:9:\"mime-type\";s:9:\"image/png\";}s:9:\"thumbnail\";a:4:{s:4:\"file\";s:19:\"favicon-150x150.png\";s:5:\"width\";i:150;s:6:\"height\";i:150;s:9:\"mime-type\";s:9:\"image/png\";}}s:10:\"image_meta\";a:12:{s:8:\"aperture\";s:1:\"0\";s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";s:1:\"0\";s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";s:1:\"0\";s:3:\"iso\";s:1:\"0\";s:13:\"shutter_speed\";s:1:\"0\";s:5:\"title\";s:0:\"\";s:11:\"orientation\";s:1:\"0\";s:8:\"keywords\";a:0:{}}s:14:\"_cloudinary_v2\";a:3:{s:15:\"_sync_signature\";a:6:{i:0;s:0:\"\";s:7:\"upgrade\";s:32:\"c4ca4238a0b923820dcc509a6f75849b\";s:8:\"download\";s:32:\"d41d8cd98f00b204e9800998ecf8427e\";s:4:\"file\";s:32:\"f50c73d00fda2bd6d78ce4082e70f008\";s:7:\"storage\";s:32:\"3bf592cee4ad21eda9258dc36c3e5207\";s:11:\"breakpoints\";s:32:\"d751713988987e9331980363e24189ce\";}s:19:\"_cloudinary_storage\";s:3:\"cld\";s:12:\"_process_log\";a:1:{s:10:\"cloud_name\";O:8:\"WP_Error\":2:{s:6:\"errors\";a:1:{i:400;a:1:{i:0;s:75:\"Invalid file parameter. Make sure your file parameter does not include '[]'\";}}s:10:\"error_data\";a:0:{}}}}}"
                ],
                "_public_id": [
                    "TheBestSchools.org-Sonic/favicon"
                ],
                "_cloudinary_pending": [
                    "1618250989"
                ],
                "_cloudinary_sync_queued": [
                    "auto_sync_thread_0"
                ],
                "auto_sync_thread_0": [
                    "1"
                ]
            }
        },
        "4125": {
            "width": 125,
            "height": 125,
            "file": "2021/04/image-1.jpg",
            "sizes": [],
            "image_meta": {
                "aperture": "0",
                "credit": "",
                "camera": "",
                "caption": "",
                "created_timestamp": "0",
                "copyright": "",
                "focal_length": "0",
                "iso": "0",
                "shutter_speed": "0",
                "title": "",
                "orientation": "0",
                "keywords": []
            },
            "_cloudinary_v2": {
                "_sync_signature": {
                    "0": "",
                    "upgrade": "c4ca4238a0b923820dcc509a6f75849b",
                    "download": "d41d8cd98f00b204e9800998ecf8427e",
                    "file": "0a9ce8f3ac41d46f8995785e99edd8d8",
                    "storage": "2e549ae11df3e08e895bec57547027bc",
                    "breakpoints": "d751713988987e9331980363e24189ce"
                },
                "_cloudinary_storage": "cld",
                "_process_log": {
                    "cloud_name": {
                        "errors": {
                            "400": [
                                "Invalid file parameter. Make sure your file parameter does not include '[]'"
                            ]
                        },
                        "error_data": []
                    }
                }
            },
            "all_meta": {
                "_wp_attached_file": [
                    "https://res.cloudinary.com/highereducation/images/v1/TheBestSchools.org-Sonic/image-1/image-1.jpg"
                ],
                "_sync_signature": [
                    "a:3:{i:0;s:0:\"\";s:7:\"upgrade\";s:32:\"c4ca4238a0b923820dcc509a6f75849b\";s:8:\"download\";s:32:\"d41d8cd98f00b204e9800998ecf8427e\";}"
                ],
                "_wp_attachment_metadata": [
                    "a:6:{s:5:\"width\";i:125;s:6:\"height\";i:125;s:4:\"file\";s:19:\"2021/04/image-1.jpg\";s:5:\"sizes\";a:0:{}s:10:\"image_meta\";a:12:{s:8:\"aperture\";s:1:\"0\";s:6:\"credit\";s:0:\"\";s:6:\"camera\";s:0:\"\";s:7:\"caption\";s:0:\"\";s:17:\"created_timestamp\";s:1:\"0\";s:9:\"copyright\";s:0:\"\";s:12:\"focal_length\";s:1:\"0\";s:3:\"iso\";s:1:\"0\";s:13:\"shutter_speed\";s:1:\"0\";s:5:\"title\";s:0:\"\";s:11:\"orientation\";s:1:\"0\";s:8:\"keywords\";a:0:{}}s:14:\"_cloudinary_v2\";a:3:{s:15:\"_sync_signature\";a:6:{i:0;s:0:\"\";s:7:\"upgrade\";s:32:\"c4ca4238a0b923820dcc509a6f75849b\";s:8:\"download\";s:32:\"d41d8cd98f00b204e9800998ecf8427e\";s:4:\"file\";s:32:\"0a9ce8f3ac41d46f8995785e99edd8d8\";s:7:\"storage\";s:32:\"2e549ae11df3e08e895bec57547027bc\";s:11:\"breakpoints\";s:32:\"d751713988987e9331980363e24189ce\";}s:19:\"_cloudinary_storage\";s:3:\"cld\";s:12:\"_process_log\";a:1:{s:10:\"cloud_name\";O:8:\"WP_Error\":2:{s:6:\"errors\";a:1:{i:400;a:1:{i:0;s:75:\"Invalid file parameter. Make sure your file parameter does not include '[]'\";}}s:10:\"error_data\";a:0:{}}}}}"
                ],
                "_public_id": [
                    "TheBestSchools.org-Sonic/image-1"
                ],
                "_cloudinary_pending": [
                    "1618250989"
                ],
                "_cloudinary_sync_queued": [
                    "auto_sync_thread_0"
                ],
                "auto_sync_thread_0": [
                    "1"
                ]
            }
        },
    },
    "post_report": {
        "4102": {
            "post_meta": []
        },
        "4103": {
            "post_meta": []
        },
        "4113": {
            "post_meta": []
        },
        "4104": {
            "post_meta": []
        },
        "4050": {
            "post_meta": []
        },
        "4123": {
            "post_meta": []
        }
    },
    "config_report": {
        "cloudinary": [],
        "about": [],
        "usage": null,
        "last_usage": {
            "plan": "Advanced Extra",
            "last_updated": "2021-04-11",
            "transformations": {
                "usage": 12709,
                "credits_usage": 12.71
            },
            "objects": {
                "usage": 874848
            },
            "bandwidth": {
                "usage": 946946967003,
                "credits_usage": 881.91
            },
            "storage": {
                "usage": 90373604577,
                "credits_usage": 84.17
            },
            "credits": {
                "usage": 978.79,
                "limit": 1350,
                "used_percent": 72.5
            },
            "requests": 946888160843,
            "resources": 165484,
            "derived_resources": 709364,
            "imagga_crop": {
                "usage": 0,
                "limit": 50
            },
            "media_limits": {
                "image_max_size_bytes": 41943040,
                "video_max_size_bytes": 1048576000,
                "raw_max_size_bytes": 104857600,
                "image_max_px": 50000000,
                "asset_max_total_px": 200000000
            },
            "max_image_size": 41943040,
            "max_video_size": 1048576000
        },
        "signature": "07e48e82e54eba7e9a3e1fa4f8f98003",
        "version": null,
        "url": null,
        "status": {
            "status": "ok"
        },
        "media_display": {
            "image_optimization": "on",
            "image_format": "auto",
            "image_quality": "auto",
            "enable_breakpoints": "off",
            "breakpoints": "3",
            "bytes_step": "200",
            "max_width": "2048",
            "min_width": "800",
            "image_freeform": "f_auto,fl_lossy,q_auto",
            "image_preview": "https://res.cloudinary.com/demo/image/upload/w_600/sample.jpg",
            "video_player": "wp",
            "video_controls": "on",
            "video_loop": "off",
            "video_autoplay_mode": "off",
            "video_limit_bitrate": "off",
            "video_bitrate": "500",
            "video_optimization": "on",
            "video_format": "auto",
            "video_quality": "auto"
        },
        "setup": {
            "enable_report": "on"
        },
        "sync_media": {
            "auto_sync": "on",
            "cloudinary_folder": "TheBestSchools.org-Sonic",
            "offload": "cld"
        },
        "gallery": {
            "transition": "fade",
            "aspectRatio": "3:4",
            "navigation": "always",
            "zoom": true,
            "carouselLocation": "top",
            "carouselOffset": 5,
            "carouselStyle": "thumbnails",
            "displayProps": {
                "mode": "classic"
            },
            "transformation": {
                "crop": "fill"
            },
            "indicatorProps": {
                "shape": "round"
            },
            "themeProps": {
                "primary": "#cf2e2e",
                "onPrimary": "#000000",
                "active": "#777777"
            },
            "zoomProps": {
                "type": "popup",
                "viewerPosition": "bottom",
                "trigger": "click"
            },
            "thumbnailProps": {
                "width": 64,
                "height": 64,
                "navigationShape": "radius",
                "selectedStyle": "gradient",
                "selectedBorderPosition": "all",
                "selectedBorderWidth": 4,
                "mediaSymbolShape": "round"
            },
            "cloudName": "highereducation",
            "container": ""
        }
    }
}

wp_get_attachment_image_srcset() returns false

I created a free plan account on Cloudinary and connected it to our Wordpress 5.6.1 installation with the Cloudinary Wordpress plugin v2.

After syncing all assets to Cloudinary wp_get_attachment_image_srcset($attachmentId) is false. I then activated "Enable responsive images" under "Media settings -> Image breakpoints" and resynced all images. But the function is still returning false.

I double checked that the correct Ids get passed to the function.

Do I have to use another function to get the srcset?

Unable to run cloudinary 2.7.3 on wordpress with PHP 5.6.40 nor PHP 7.4

Hi,

I had an old wordpress site back to 4.6 running PHP 5.6.40. I have updated Wordpress to latest version and updated Cloudinary plugin to the latest. I had some issues on the update, since my previous credentials didn't work, so I uninstalled and reinstalled the plugin.

After reinstalling the site broke with a HTTP 500 error:

[Mon May 31 17:37:17.170070 2021] [:error] [pid] [client xxxx:58576] PHP Fatal error: Cannot use Cloudinary\\Connect as Connect because the name is already in use in /www/wp-content/plugins/cloudinary-image-management-and-manipulation-in-the-cloud-cdn/php/ui/component/class-plan.php on line 13, referer: http://MYSITE.COM/wp-admin/plugin-install.php?s=cloudinary&tab=search&type=term

I suspect one of the other plugins is interferring with Cloudinary, but I think it might be also an issue related to PHP version.

I have removed all the plugins (even Cloudinary) and reinstalled Cloudinary plugin again, but the issue is also the same on that configuration.

Will you please advice?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.