feat: migrate-from-smush + Picture-tag rewriter (v0.2.0)
Unblocks production use on sites previously running Smush.
migrate-from-smush:
- Reads wp-smpro-smush-data postmeta, writes _h4b_img_optim marker
- --dry-run / --force-rescan / --remove-smush-meta / --limit flags
- Verified: 100 attachments migrated cleanly on dev.rds.ink,
bulk count drops from 734 → 634
Picture_Tag rewriter:
- Hooks the_content + post_thumbnail_html + widget_text + Elementor
frontend + wp_get_attachment_image at priority 99
- Wraps <img> in <picture><source avif><source webp><img></picture>
when sibling files exist
- Double-wrap protection via byte-range tracking of existing <picture> blocks
- Per-image opt-out via data-no-h4b attribute
- Cached sibling lookups per request
- 8 edge-case tests pass
LOC: 2480 (was 1997). Adds class-cli-migrate.php (193 LOC) and
class-picture-tag.php (284 LOC).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -15,8 +15,9 @@ final class CLI {
|
||||
|
||||
public static function register(): void {
|
||||
\WP_CLI::add_command( 'h4b-img', __CLASS__ );
|
||||
\WP_CLI::add_command( 'h4b-img bulk', CLI_Bulk::class );
|
||||
\WP_CLI::add_command( 'h4b-img rescue', CLI_Rescue::class );
|
||||
\WP_CLI::add_command( 'h4b-img bulk', CLI_Bulk::class );
|
||||
\WP_CLI::add_command( 'h4b-img rescue', CLI_Rescue::class );
|
||||
\WP_CLI::add_command( 'h4b-img migrate-from-smush', CLI_Migrate::class );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user