| 开发者 |
mantrabrain
MantraBrain |
|---|---|
| 更新时间 | 2026年10月18日 10:05 |
| 捐献地址: | 去捐款 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv3 |
| 版权网址: | 版权信息 |
woocommerce_uploads) or attached to a product's downloads are never watermarked, resized, copied or previewed, so buyers always receive the exact original.{{camera_model}} · {{aperture}} · ISO {{iso}}.ultimate-watermark-pro.zip under Plugins → Add New → Upload Plugin and activate it.Go to Watermark → Add Watermark, choose Text or Image, set the position and opacity, make sure Automatic watermarking is on, and save. Every image you upload from then on is watermarked. For images you already have, select them in Media → Library and choose Apply Watermark (Bulk actions in list view, or Bulk select in grid view).
Yes. With backups on (the default), the original is saved before the first watermark. Open Watermark → Backups and click Restore (or select several and use Restore Selected), or use Remove watermark in the Media Library. The thumbnails are regenerated automatically.
Turn on Repeat Pattern on the watermark's Appearance tab and set the spacing. The watermark is tiled across the entire image, whatever its size or orientation. A scaled logo (for example 20 %) or a rotated text gives the classic stock-photo look.
Yes. Product, gallery and variation images are watermarked automatically when the product is saved, including on first publish. Add a Post Type is Product rule to watermark only product images. With Pro you can also set a different watermark per product or per product category.
No. Files uploaded as downloadable product files in WooCommerce or Dokan, or used in a product's Downloadable files, are never watermarked, resized or copied. Buyers always receive the exact file you uploaded. Developers can adjust this with the ultimate_watermark_preserve_download_originals filter.
Yes. Images vendors upload from the Dokan dashboard are watermarked when the product is saved, rules such as Post Type is Product work on the first publish, vendors can only change their own images, and downloadable files stay untouched. Enable Frontend watermarking on the watermark for front-end uploads.
Check that the watermark is Active and has Automatic watermarking (or Frontend watermarking for front-end uploads) enabled, and that the upload toggle in the media screen is on. If the watermark has rules, it only applies to images that match them: open the Rules tab and relax or remove them. Animated GIFs and downloadable product files are skipped on purpose.
With Imagick (used by most hosts), the photo's EXIF and IPTC data is kept. The GD library cannot keep metadata, so on GD-only servers it is removed from watermarked copies; your backed-up original always keeps it.
The free version includes bundled fonts (sans-serif, serif and monospace) that work on every host, mapped to the Arial, Helvetica, Times New Roman, Georgia, Verdana and Courier New choices. Pro adds 30 Google Fonts, downloaded once and cached on your server.
No. Watermarks are applied once, when an image is uploaded or when you apply them, never on page views. (Pro's optional on-the-fly display mode generates a cached copy the first time an image is viewed.)
Yes. Images uploaded through the REST API, the block editor, page builders or headless front ends are watermarked like any other upload.
Watermarks are written into the image file on your server, so a CDN that pulls from your site serves the watermarked image. Offload plugins that move files to S3 or similar storage should do so after the image has been processed; test with a single upload first.
Yes. On update a one-time migration converts your 1.x watermark, settings and per-image records to the new format.
The free version is fully functional with one watermark: automatic, bulk, manual and frontend watermarking, repeat pattern, size and post-type rules, backups and restore, and WooCommerce/Dokan support. Pro adds unlimited watermarks, more rule conditions, placeholders, Google Fonts, per-product watermarks, on-the-fly display and batch processing.
Watermarked images stay watermarked. To get the originals back, restore them from Watermark → Backups first. Your watermarks, settings and backup files (in wp-content/uploads/ulwm-backup/) are kept, so nothing is lost if you reinstall; remove that folder manually if you no longer need it.
manage_options.upload_files.bool|string|array, \GdImage|false), which are a parse error on 7.4 - so watermarking and backups fatally errored the moment those classes loaded. The return types moved to docblocks and the whole plugin now parses cleanly on PHP 7.4.str_ends_with(), which WordPress only polyfills from 5.9 onward. On WordPress 5.0-5.8 running PHP 7.4 that was a fatal error on the backup screen. The header now states the version the plugin actually needs.assets/fonts/ (Nunito sans, Merriweather serif, JetBrains Mono) so text rendering works regardless of host environment, with the family picker mapped to its closest bundled stand-in.ultimate_watermark_allowed_fonts filter so Pro typefaces survive the save → load round trip.imagename-*.* and matched siblings like imagename-2.webp, then produced confusing "image does not exist" warnings during regen. Cleanup is now driven entirely from wp_get_attachment_metadata()['sizes'] so only this attachment's size files are touched.UWNotifications.confirm() resolves with the action string and the callers were doing if (confirmed) — truthy for the string 'cancel'. All five call sites now check action === 'confirm' explicitly.RuntimeException with a clear message if the bundled font is somehow missing, instead of letting FreeType emit its cryptic error.error_log() traces ("Imagick: family=… → using font…", etc.) — debug.log stays quiet in production while WP_DEBUG is off.ultimate_watermark_resolve_font_path lets Pro / third-party plugins inject custom font files into the rendering pipeline.ultimate_watermark_admin_enqueue_scripts lets Pro hook its admin assets at the right point in the asset pipeline.greater_equal, less_equal, contains, not_contains, starts_with, ends_with, in, not_in, between, not_between are now actually saved and evaluated.floatval() of a date string.product_cat / product_tag rules with contains, in, not_in and other multi-value operators now correctly evaluate against every term on the product.{user_display_name}, {user_email}, etc.) now resolve to the attachment uploader, then the parent post's author, then current user — not just the logged-in admin.wp_date() (locale-aware) and the attachment's upload time instead of server time.admin.css so the attachment-screen panel inherits the same look.https://ultimate-watermark.mantrabrain.com/docs/.