I am not sure about complete scope of your requirements, but I would probably:
- Register special image size(s) that would be used instead of original.
- Tie watermarking to generation of that size.
This way there is no need for dynamic image processing. As for your concern about older images having no watermark – you will be able to (re)generate sizes for them using one of the plugins floating around (that is quite common operation).
Related Posts:
- A tool to analyze rewrite rules? [closed]
- Making a plugin file accessible via url rewrite?
- How to Rewrite WordPress URL for a Plugin
- Custom Rewriting to Plugin with Parameters
- Filter to change the content of 404 page
- Add rewrite rule in plugin: with .htaccess in plugin folder or using WordPress functions
- Removing rules from .htaccess
- Mapping multiple URLs to same page
- Rewrite Point Doesn’t Work on Custom Taxonomy
- Rewrite url for existing page without flush_rewrite_rules
- Custom rewrite rule serves content, but returns 404 error code
- URL rewriting must be activated manually for my plugin
- How to change the URL pattern for single post view
- Why doesn’t flush_rewrite_rules run on plugin activation?
- Redirect traffic to plugin
- Append country to ‘pretty’ url but serve same page
- How To Consistently Enforce Rewrite Rule in Plugin Development
- How can I rewrite a URL to pass requests to a custom method via AJAX? (I can’t use admin-ajax.php)
- Adding rewrite rule dynamically
- rewrite URL based on selected taxonomy for post page
- Remove custom post type slug from URL and add taxonomy Slug
- Help writing custom function with rewrite endpoint that generates a page from dynamic content
- Possible to get all posts with my shortcode?
- add_rewrite_rule behaving strangely
- HowTo to add my rewrite rules at the beginning, redirect to the right page and flush the rules on plugin activation?
- Create page (not the post type) dynamically
- How can I add rewrite rules to a class-based plugin?
- configuration of .htaccess for add_rewrite_rule to make sense
- Plugin Development – Get Admin Url (Including cases where wp-admin is not used)
- Forward an old url rewrite scheme to a new one?
- Custom Path for a Plugin
- Custom post type change permalink query
- Change cannonical URL after changing url with add_rewrite_rule()
- Disabling Yoast, All-in-One, and Rank Math on Certain Pages within a Plugin
- WordPress custom url without using any of the custom tags given
- Using meta_key & meta_value in add_rewrite_rule
- How to force download a plugin generated file?
- How to pass a more variable with page/subpage in Wordprees URL?
- Any way to make Apache’s internal redirect work?
- Rewriting URLs with a query string
- How can I send an id over the url?
- Custom slug in url for CPT and taxonomy
- add_rewrite_rule not working
- Mapping multiple URLs to same page
- Use custom clean URLs for a plug in
- How to Rewrite WordPress URL for a Plugin
- Virtual Page with Registration form
- How to use permalink query to go to specific tabs in posts
- How to Rewrite WordPress URL for a Plugin
- redirect word-press page with page values
- URL rewrite parameter lost (add_rewrite_rule)
- Custom rewrite, url path with parameters to a page
- No Error Log File, no debug info
- Load js/css files only on specific admin UI pages
- Prevent notice and warnings in error_reporting?
- how to use thickbox in admin?
- Nonce in settings API with tabbed navigation
- How do I only load js on the post-new.php and post.php pages in admin?
- Screenshot are not showing up on plugin page
- How to not let a user with a new role edit users that have administrator role?
- Configuring WordPress Auth Cookie Expiration
- How to display a message about updates in the plugin list
- Loading jQuery and jQuery plugin script files correctly [duplicate]
- How to use radio buttons in WordPress plugin options using register settings?
- manage_posts_custom_column, showing serial number using increment in loop
- SQL query for custom taxonomy slugs
- What should happen when a WordPress Plugin is activated across the network (Network Wide Activation)
- Send push when new post is published in a certain category
- Storing data in wordpress database from ajax call from different website
- Prevent invalid or empty values from being saved to the database and retain the form field values upon error
- Hide shortcodes “code” when using the “editor” the same as wordpress do with “gallery”
- How to Trigger WP CRON at Local Timestamp?
- Problem with saving checkbox values with WordPress Widget API
- Force download file from plugin (change output http headers)
- How to get all product in the woo-commerce? [closed]
- Check user’s role and store in variable
- What’s the hook for filtering every texts of site?
- Undefined variable’s error when expected to have passed the content of variable [closed]
- How to add a panel/box/widget/are/screen to the right side of edit post/page confusion
- Issue with plugin sub menu and pages
- How can I programmatically change a MySql variable (foreign_keys_check)?
- Problem with display data from get_option
- Screenshots on plugin page taken old [closed]
- Get Posts by IDs (optionally)
- WordPress templating system for custom plugins
- Lead form that submits to 2 external APIs
- Modify code for functions.php with specific twitter user url and hashtags
- Add new header/footer on landing page with plugin
- Redirect with message after admin_post.php
- Plugin MySQL SELECT custom data and filter on user meta
- Why Worpdress doesn’t create table in database?
- Get Commentor IP When Marking Comment As Spam
- What is the use of wp_schedule_event hook?
- Best practice to include custom user styles in widgets
- Very Quick Custom Pluggable Function Question
- Sending Parameter Failed
- Extend Plugin that creates an endpoint for GET request to also accepts POST requests
- Personalized URL for non-logged in WordPress
- WordPress Breadcrumb Taxonomy Display
- Do plugin auto-updates also run for a lower version?