From 222037f1fe684afc5b0124d82514b654430c3268 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Tue, 25 Nov 2025 09:12:05 +0100 Subject: [PATCH 01/46] replace 'all' with 'pre_option' filter --- src/class-plugin.php | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 37c73fe..74a31e9 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -62,9 +62,7 @@ public static function get_instance() { public function register_hooks() { $this->accessed_options = \get_option( 'option_optimizer', [ 'used_options' => [] ] )['used_options']; - // Hook into all actions and filters to monitor option accesses. - // @phpstan-ignore-next-line -- The 'all' hook does not need a return. - \add_filter( 'all', [ $this, 'monitor_option_accesses' ] ); + \add_filter( 'pre_option', [ $this, 'add_option_usage' ], PHP_INT_MAX, 2 ); // Use the shutdown action to update the option with tracked data. \add_action( 'shutdown', [ $this, 'update_tracked_options' ] ); @@ -91,35 +89,27 @@ public function reset( $should_reset = true ) { $this->should_reset = $should_reset; } - /** - * Monitor all actions and filters for option accesses. - * - * @param string $tag The current action or filter tag being executed. - * - * @return void - */ - public function monitor_option_accesses( $tag ) { - // Check if the tag is related to an option access. - if ( str_starts_with( $tag, 'option_' ) || str_starts_with( $tag, 'default_option_' ) ) { - $option_name = preg_replace( '#^(default_)?option_#', '', $tag ); - $this->add_option_usage( $option_name ); - } - } - /** * Add an option to the list of used options if it's not already there. * + * @param mixed $pre The value to return instead of the option value. * @param string $option_name Name of the option being accessed. * - * @return void + * @return mixed */ - protected function add_option_usage( $option_name ) { - // Check if this option hasn't been tracked yet and add it to the array. - if ( ! array_key_exists( $option_name, $this->accessed_options ) ) { - $this->accessed_options[ $option_name ] = 1; - return; + public function add_option_usage( $pre, $option_name ) { + + // If the $pre is false the get_option() will not be short-circuited. + if ( false === $pre ) { + // Check if this option hasn't been tracked yet and add it to the array. + if ( ! array_key_exists( $option_name, $this->accessed_options ) ) { + $this->accessed_options[ $option_name ] = 0; + } + + ++$this->accessed_options[ $option_name ]; } - ++$this->accessed_options[ $option_name ]; + + return $pre; } /** From b28eaf8bfb9ca099f340f0389ceb189553bf9aac Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Tue, 25 Nov 2025 09:13:42 +0100 Subject: [PATCH 02/46] defined( 'WP_SETUP_CONFIG' ) --- src/class-plugin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 74a31e9..75a3938 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -100,7 +100,7 @@ public function reset( $should_reset = true ) { public function add_option_usage( $pre, $option_name ) { // If the $pre is false the get_option() will not be short-circuited. - if ( false === $pre ) { + if ( ! defined( 'WP_SETUP_CONFIG' ) && false === $pre ) { // Check if this option hasn't been tracked yet and add it to the array. if ( ! array_key_exists( $option_name, $this->accessed_options ) ) { $this->accessed_options[ $option_name ] = 0; From ff64927e8f9eb208dd4e3498f0eab8b0f45f0627 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Tue, 25 Nov 2025 09:21:59 +0100 Subject: [PATCH 03/46] changelog --- readme.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/readme.txt b/readme.txt index 1a0eb9d..ac1c87a 100644 --- a/readme.txt +++ b/readme.txt @@ -54,6 +54,10 @@ Please do a pull request via GitHub on [this file](https://github.com/Emilia-Cap == Changelog == += 1.5.2 = + +* Replace using 'all' filter for monitoring option usage with 'pre_option' filter for better performance. + = 1.5.1 = * Add "select all" checkbox. From 8acefbaa80404c3abce87fd7f9876c25a087c968 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 27 Nov 2025 13:44:49 +0100 Subject: [PATCH 04/46] WIP: add settings page --- aaa-option-optimizer.php | 3 + src/class-admin-page.php | 2 +- src/class-plugin.php | 50 ++++++-- src/class-settings-page.php | 235 ++++++++++++++++++++++++++++++++++++ 4 files changed, 281 insertions(+), 9 deletions(-) create mode 100644 src/class-settings-page.php diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index ef82da5..47d19c2 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -49,6 +49,9 @@ function aaa_option_optimizer_activation() { 'starting_point_num' => $result->count, 'starting_point_date' => current_time( 'mysql' ), 'used_options' => [], + 'settings' => [ + 'option_tracking' => 'legacy', + ], ], false ); diff --git a/src/class-admin-page.php b/src/class-admin-page.php index ea476fe..7c7812d 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -73,7 +73,7 @@ public function add_admin_page() { * @return void */ public function enqueue_scripts( $hook ) { - if ( $hook !== 'tools_page_aaa-option-optimizer' ) { + if ( $hook !== 'tools_page_aaa-option-optimizer' && $hook !== 'tools_page_aaa-option-optimizer-settings' ) { return; } diff --git a/src/class-plugin.php b/src/class-plugin.php index 75a3938..4b30069 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -62,7 +62,13 @@ public static function get_instance() { public function register_hooks() { $this->accessed_options = \get_option( 'option_optimizer', [ 'used_options' => [] ] )['used_options']; - \add_filter( 'pre_option', [ $this, 'add_option_usage' ], PHP_INT_MAX, 2 ); + if ( Settings_Page::get_option_tracking() === 'pre_option' ) { + \add_filter( 'pre_option', [ $this, 'monitor_option_accesses_pre_option' ], PHP_INT_MAX, 2 ); + } else { + // Hook into all actions and filters to monitor option accesses. + // @phpstan-ignore-next-line -- The 'all' hook does not need a return. + \add_filter( 'all', [ $this, 'monitor_option_accesses_legacy' ] ); + } // Use the shutdown action to update the option with tracked data. \add_action( 'shutdown', [ $this, 'update_tracked_options' ] ); @@ -75,6 +81,9 @@ public function register_hooks() { // Register the admin page. $admin_page = new Admin_Page(); $admin_page->register_hooks(); + + // Register the settings page. + Settings_Page::register_hooks(); } } @@ -89,6 +98,21 @@ public function reset( $should_reset = true ) { $this->should_reset = $should_reset; } + /** + * Monitor all actions and filters for option accesses. + * + * @param string $tag The current action or filter tag being executed. + * + * @return void + */ + public function monitor_option_accesses_legacy( $tag ) { + // Check if the tag is related to an option access. + if ( str_starts_with( $tag, 'option_' ) || str_starts_with( $tag, 'default_option_' ) ) { + $option_name = preg_replace( '#^(default_)?option_#', '', $tag ); + $this->add_option_usage( $option_name ); + } + } + /** * Add an option to the list of used options if it's not already there. * @@ -97,21 +121,31 @@ public function reset( $should_reset = true ) { * * @return mixed */ - public function add_option_usage( $pre, $option_name ) { + public function monitor_option_accesses_pre_option( $pre, $option_name ) { // If the $pre is false the get_option() will not be short-circuited. if ( ! defined( 'WP_SETUP_CONFIG' ) && false === $pre ) { - // Check if this option hasn't been tracked yet and add it to the array. - if ( ! array_key_exists( $option_name, $this->accessed_options ) ) { - $this->accessed_options[ $option_name ] = 0; - } - - ++$this->accessed_options[ $option_name ]; + $this->add_option_usage( $option_name ); } return $pre; } + /** + * Add an option to the list of used options if it's not already there. + * + * @param string $option_name Name of the option being accessed. + * + * @return void + */ + protected function add_option_usage( $option_name ) { + if ( ! array_key_exists( $option_name, $this->accessed_options ) ) { + $this->accessed_options[ $option_name ] = 0; + } + + ++$this->accessed_options[ $option_name ]; + } + /** * Update the 'option_optimizer' option with the list of used options at the end of the page load. * diff --git a/src/class-settings-page.php b/src/class-settings-page.php new file mode 100644 index 0000000..fa4d790 --- /dev/null +++ b/src/class-settings-page.php @@ -0,0 +1,235 @@ + [ __CLASS__, 'sanitize_settings' ], + ] + ); + + add_settings_section( + 'aaa_option_optimizer_tracking_section', + __( 'Option tracking', 'aaa-option-optimizer' ), + [ __CLASS__, 'render_tracking_section' ], + 'aaa-option-optimizer-settings' + ); + + add_settings_section( + 'aaa_option_optimizer_stats_section', + __( 'Stats', 'aaa-option-optimizer' ), + [ __CLASS__, 'render_stats_section' ], + 'aaa-option-optimizer-settings' + ); + } + + /** + * Render settings page + */ + public static function render_settings_page(): void { + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + // Check if settings were saved. + if ( isset( $_GET['settings-updated'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing -- Nonce check not needed here. + add_settings_error( + 'aaa_option_optimizer_messages', + 'aaa_option_optimizer_message', + esc_html__( 'Settings saved.', 'aaa-option-optimizer' ), + 'updated' + ); + } + + settings_errors( 'aaa_option_optimizer_messages' ); + ?> +
+

+
+ +
+
+ +

+
+ +
+ +
+ [] ] ); + + global $wpdb; + $autoload_values = \wp_autoload_values_to_autoload(); + $placeholders = \implode( ',', \array_fill( 0, \count( $autoload_values ), '%s' ) ); + + // phpcs:disable WordPress.DB + $result = $wpdb->get_row( + $wpdb->prepare( "SELECT count(*) AS count, SUM( LENGTH( option_value ) ) as autoload_size FROM {$wpdb->options} WHERE autoload IN ( $placeholders )", $autoload_values ) + ); + // phpcs:enable WordPress.DB + ?> +

+ count ), + \number_format( ( $result->autoload_size / 1024 ), 1 ) + ); + ?> +

+ +
+

+
+ + + + +
+ +
+ $input Settings input. + * @return array Sanitized settings merged with existing option data. + */ + public static function sanitize_settings( $input ): array { + // Get the existing option_optimizer data to preserve other keys. + $existing = get_option( self::OPTION_NAME, [] ); + + // Initialize settings array if it doesn't exist. + if ( ! isset( $existing['settings'] ) ) { + $existing['settings'] = []; + } + + // Sanitize the option_tracking setting. + $option_tracking = 'legacy'; + if ( isset( $input['settings']['option_tracking'] ) ) { + $input_option_tracking = \sanitize_text_field( $input['settings']['option_tracking'] ); + if ( \in_array( $input_option_tracking, [ 'pre_option', 'legacy' ], true ) ) { + $option_tracking = $input_option_tracking; + } + } + $existing['settings']['option_tracking'] = $option_tracking; + + // Return the full option structure with merged settings. + return $existing; + } + + /** + * Get settings + * + * @return array Settings from the settings subarray. + */ + public static function get_settings(): array { + $defaults = [ + 'option_tracking' => 'legacy', + ]; + + $option_optimizer = get_option( self::OPTION_NAME, [] ); + $settings = isset( $option_optimizer['settings'] ) ? $option_optimizer['settings'] : []; + + return wp_parse_args( $settings, $defaults ); + } + + /** + * Get option tracking + * + * @return string Option tracking. + */ + public static function get_option_tracking(): string { + $settings = self::get_settings(); + return $settings['option_tracking'] ?? 'legacy'; + } +} From 696fcfe8f2b4b0ff4cf84cf0c328048cc06df855 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Mon, 8 Dec 2025 11:50:02 +0100 Subject: [PATCH 05/46] GitHub banner --- .wordpress-org/github_banner_aaaoo_pp.png | Bin 0 -> 114571 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .wordpress-org/github_banner_aaaoo_pp.png diff --git a/.wordpress-org/github_banner_aaaoo_pp.png b/.wordpress-org/github_banner_aaaoo_pp.png new file mode 100644 index 0000000000000000000000000000000000000000..f195ad626c80abf8d7e9a14ed1e18f76704ffdc9 GIT binary patch literal 114571 zcmY(rc|6qZ_dou!3rQtQ){2Obtl1?>vZO58Mp9(ocV^^{D1=biLqhiK#wgi$vM*!J zzK?Af^Sx%=_wV=q-2Zexn%C=G=Q_*tJkPnVSD`vucTdw?q=6vlwEDd}x)4P8UkZqt z6#PLRkoW@p!Rn@J==R9*g`4M7m*`;IGag5~q3T5;)C{k!+>Jlt`OhNDhy@%>P_XpK69vzQOxiK!u0;%|9bmeS zmb|#t?`t*^_ajTmP7|fDx;-ygNm#_cR#BO1ww^E3U0i$SE=2KQWOaAN?(mnJ+NhsY zRM&U$$ms?(QJ9ys-0XtmVRXMuX>PxrycO#WqL5j&tjt|qMSC6LyHxaQGc(GJ?sLi2 z4E9$$UMzP=jg*vB3c)#L5w6!>UT50S6X~FF!jzXkHp<(5a8=~VO>?4*=1*EfSZr5c zq_tlSW^K>JckNNtfK|-;!d|qA2SkOdd`lO@10SC^J{v(-ebd1+`*(k3?fBTSpFs

-+Zxf5Kg$%VsWVteZS$&mOV_~>P3vc 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%0A+L^4`qDCoajyn@*EzVU> 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 literal 0 HcmV?d00001 From 8d4896f301fda78de1876d15df1a99793e7bb8fd Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Mon, 8 Dec 2025 11:51:40 +0100 Subject: [PATCH 06/46] Add GitHub banner to README Added a GitHub banner image to the README. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dd86c7d..7692f71 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ [![Try this plugin on the WordPress playground](https://img.shields.io/badge/Try%20this%20plugin%20on%20the%20WordPress%20Playground-%23117AC9.svg?style=for-the-badge&logo=WordPress&logoColor=ddd)](https://playground.wordpress.net/#%7B%22landingPage%22:%22/wp-admin/tools.php?page=aaa-option-optimizer%22,%22features%22:%7B%22networking%22:true%7D,%22steps%22:%5B%7B%22step%22:%22defineWpConfigConsts%22,%22consts%22:%7B%22IS_PLAYGROUND_PREVIEW%22:true%7D%7D,%7B%22step%22:%22login%22,%22username%22:%22admin%22,%22password%22:%22password%22%7D,%7B%22step%22:%22installPlugin%22,%22pluginZipFile%22:%7B%22resource%22:%22url%22,%22url%22:%22https://bypass-cors.altha.workers.dev/https://github.com/Emilia-Capital/aaa-option-optimizer/archive/refs/heads/develop.zip%22%7D,%22options%22:%7B%22activate%22:true%7D%7D%5D%7D) +![GitHub banner](/.wordpress-org/github_banner_aaaoo_pp.png) + # AAA Option Optimizer This plugin tracks which of the autoloaded options are used on a page, and stores that data at the end of page render. It keeps an array of options that it has seen as being used. On the admin page, it compares all the autoloaded options to the array of stored options, and shows the autoloaded options that have not been used as you were browsing the site. If you've been to every page on your site, or you've kept the plugin around for a week or so, this means that those options probably don't need to be autoloaded. From 8df242f5572d1a4a2a1f55b44173f6f574d6a0b7 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Mon, 8 Dec 2025 20:06:24 +0100 Subject: [PATCH 07/46] Update image --- .wordpress-org/github_banner_aaaoo_pp.png | Bin 114571 -> 113454 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.wordpress-org/github_banner_aaaoo_pp.png b/.wordpress-org/github_banner_aaaoo_pp.png index f195ad626c80abf8d7e9a14ed1e18f76704ffdc9..32efae9e55b99ff0817d9416be41934921893d30 100644 GIT binary patch literal 113454 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

7Aa54X>|NziBi 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 X)@H0An`J%0>^O5{Yojtle9Zp<%*Fl^ literal 114571 zcmY(rc|6qZ_dou!3rQtQ){2Obtl1?>vZO58Mp9(ocV^^{D1=biLqhiK#wgi$vM*!J zzK?Af^Sx%=_wV=q-2Zexn%C=G=Q_*tJkPnVSD`vucTdw?q=6vlwEDd}x)4P8UkZqt z6#PLRkoW@p!Rn@J==R9*g`4M7m*`;IGag5~q3T5;)C{k!+>Jlt`OhNDhy@%>P_XpK69vzQOxiK!u0;%|9bmeS zmb|#t?`t*^_ajTmP7|fDx;-ygNm#_cR#BO1ww^E3U0i$SE=2KQWOaAN?(mnJ+NhsY zRM&U$$ms?(QJ9ys-0XtmVRXMuX>PxrycO#WqL5j&tjt|qMSC6LyHxaQGc(GJ?sLi2 z4E9$$UMzP=jg*vB3c)#L5w6!>UT50S6X~FF!jzXkHp<(5a8=~VO>?4*=1*EfSZr5c zq_tlSW^K>JckNNtfK|-;!d|qA2SkOdd`lO@10SC^J{v(-ebd1+`*(k3?fBTSpFs

-+Zxf5Kg$%VsWVteZS$&mOV_~>P3vc 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%0A+L^4`qDCoajyn@*EzVU> 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 From f21c6cb139386a57c3726704fdfb2a6902b1b236 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Wed, 10 Dec 2025 10:39:07 +0100 Subject: [PATCH 08/46] move stats & reset button to the Settings page --- src/class-admin-page.php | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/src/class-admin-page.php b/src/class-admin-page.php index 7c7812d..611f8a4 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -186,38 +186,6 @@ public function render_admin_page_ajax() {

-

-

- count ), - \number_format( ( $result->autoload_size / 1024 ), 1 ) - ); - ?> -

- -

- -
-

-
- - - - -
- -

From fbf8c9ac5307e2fcf12b8e92705a97989df40f0a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Wed, 10 Dec 2025 10:41:45 +0100 Subject: [PATCH 09/46] @return --- src/class-settings-page.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/class-settings-page.php b/src/class-settings-page.php index fa4d790..a8ddb9a 100644 --- a/src/class-settings-page.php +++ b/src/class-settings-page.php @@ -24,6 +24,8 @@ class Settings_Page { /** * Initialize the settings + * + * @return void */ public static function register_hooks() { add_action( 'admin_menu', [ __CLASS__, 'add_settings_page' ] ); @@ -32,6 +34,8 @@ public static function register_hooks() { /** * Add settings page to Tools menu + * + * @return void */ public static function add_settings_page(): void { add_submenu_page( @@ -46,6 +50,8 @@ public static function add_settings_page(): void { /** * Register settings + * + * @return void */ public static function register_settings(): void { register_setting( @@ -73,6 +79,8 @@ public static function register_settings(): void { /** * Render settings page + * + * @return void */ public static function render_settings_page(): void { if ( ! current_user_can( 'manage_options' ) ) { @@ -106,6 +114,8 @@ public static function render_settings_page(): void { /** * Render tracking section + * + * @return void */ public static function render_tracking_section(): void { $settings = self::get_settings(); @@ -129,6 +139,8 @@ public static function render_tracking_section(): void { /** * Render stats section description + * + * @return void */ public static function render_stats_section(): void { $option_optimizer = \get_option( 'option_optimizer', [ 'used_options' => [] ] ); From b2603d9d21e15fdb179786aee8493cc1e7d44e19 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Wed, 10 Dec 2025 10:50:06 +0100 Subject: [PATCH 10/46] change option order --- css/style.css | 7 +++++++ src/class-settings-page.php | 35 +++++++++++++++++------------------ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/css/style.css b/css/style.css index 5baaa58..f3d5fe6 100644 --- a/css/style.css +++ b/css/style.css @@ -150,3 +150,10 @@ div.dt-container .dt-input { .aaa_option_table .source { width: 20%; } + +/* Settings page */ +.aaa-option-optimizer-tracking-fieldset { + display: flex; + flex-direction: column; + gap: 10px; +} \ No newline at end of file diff --git a/src/class-settings-page.php b/src/class-settings-page.php index a8ddb9a..3ffb055 100644 --- a/src/class-settings-page.php +++ b/src/class-settings-page.php @@ -63,16 +63,16 @@ public static function register_settings(): void { ); add_settings_section( - 'aaa_option_optimizer_tracking_section', - __( 'Option tracking', 'aaa-option-optimizer' ), - [ __CLASS__, 'render_tracking_section' ], + 'aaa_option_optimizer_stats_section', + __( 'Stats', 'aaa-option-optimizer' ), + [ __CLASS__, 'render_stats_section' ], 'aaa-option-optimizer-settings' ); add_settings_section( - 'aaa_option_optimizer_stats_section', - __( 'Stats', 'aaa-option-optimizer' ), - [ __CLASS__, 'render_stats_section' ], + 'aaa_option_optimizer_tracking_section', + __( 'Option tracking', 'aaa-option-optimizer' ), + [ __CLASS__, 'render_tracking_section' ], 'aaa-option-optimizer-settings' ); } @@ -121,18 +121,17 @@ public static function render_tracking_section(): void { $settings = self::get_settings(); ?>

-
- -
- +
+ +
Date: Wed, 10 Dec 2025 11:14:05 +0100 Subject: [PATCH 11/46] delay get_option( 'option_optimizer' ) to 'shutdown' --- src/class-plugin.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 37c73fe..9830533 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -60,7 +60,7 @@ public static function get_instance() { * @return void */ public function register_hooks() { - $this->accessed_options = \get_option( 'option_optimizer', [ 'used_options' => [] ] )['used_options']; + $this->accessed_options = []; // Hook into all actions and filters to monitor option accesses. // @phpstan-ignore-next-line -- The 'all' hook does not need a return. @@ -135,9 +135,15 @@ public function update_tracked_options() { // Retrieve the existing option_optimizer data. $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $option_optimizer['used_options'] = $this->accessed_options; + if ( ! $this->should_reset ) { + foreach ( $this->accessed_options as $option_name => $count ) { + if ( ! isset( $option_optimizer['used_options'][ $option_name ] ) ) { + $option_optimizer['used_options'][ $option_name ] = 0; + } - if ( $this->should_reset ) { + $option_optimizer['used_options'][ $option_name ] += $count; + } + } else { $option_optimizer['used_options'] = []; } From 168ff77e50c3506697e95c6d23ac67295d04349c Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Wed, 10 Dec 2025 15:42:59 +0100 Subject: [PATCH 12/46] already set --- src/class-plugin.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 9830533..82a03fb 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -60,8 +60,6 @@ public static function get_instance() { * @return void */ public function register_hooks() { - $this->accessed_options = []; - // Hook into all actions and filters to monitor option accesses. // @phpstan-ignore-next-line -- The 'all' hook does not need a return. \add_filter( 'all', [ $this, 'monitor_option_accesses' ] ); From 0bc9aee610fe2c7833fff8a3ec19c46eb00296df Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Wed, 10 Dec 2025 15:45:12 +0100 Subject: [PATCH 13/46] update data every 5 mins --- src/class-plugin.php | 100 +++++++++++++++++++++++++++++++++++++------ uninstall.php | 3 ++ 2 files changed, 91 insertions(+), 12 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 82a03fb..db60b33 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -123,6 +123,9 @@ protected function add_option_usage( $option_name ) { /** * Update the 'option_optimizer' option with the list of used options at the end of the page load. * + * Uses transient batching to reduce database writes - only flushes to the main option + * every 5 minutes instead of on every request. + * * @return void */ public function update_tracked_options() { @@ -130,22 +133,95 @@ public function update_tracked_options() { if ( isset( $_GET['page'] ) && $_GET['page'] === 'aaa-option-optimizer' ) { return; } - // Retrieve the existing option_optimizer data. - $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - if ( ! $this->should_reset ) { - foreach ( $this->accessed_options as $option_name => $count ) { - if ( ! isset( $option_optimizer['used_options'][ $option_name ] ) ) { - $option_optimizer['used_options'][ $option_name ] = 0; - } + // Handle reset: clear batch and main option. + if ( $this->should_reset ) { + \delete_transient( 'option_optimizer_batch' ); - $option_optimizer['used_options'][ $option_name ] += $count; - } - } else { + $option_optimizer = \get_option( 'option_optimizer', [ 'used_options' => [] ] ); $option_optimizer['used_options'] = []; + \update_option( 'option_optimizer', $option_optimizer, false ); + return; + } + + // Get the batch data. + $batch_data = $this->get_batch_data(); + + // Add current request's options to the batch. + foreach ( $this->accessed_options as $option_name => $count ) { + if ( ! isset( $batch_data['options'][ $option_name ] ) ) { + $batch_data['options'][ $option_name ] = 0; + } + $batch_data['options'][ $option_name ] += $count; + } + + // Check if it's time to flush the batch. + $should_flush = ( \time() - $batch_data['last_flush'] ) >= $this->get_flush_interval(); + + // Flush batch to main option every 5 minutes. + if ( ! empty( $batch_data['options'] ) && $should_flush ) { + $this->flush_batch_to_option( $batch_data['options'] ); + + // Reset the batch data. + $batch_data = [ + 'options' => [], + 'last_flush' => \time(), + ]; + } + + // No expiry - batch is explicitly deleted on flush, expiry would only cause data loss. + \set_transient( 'option_optimizer_batch', $batch_data, 0 ); + } + + /** + * Get the batch data. + * + * @return array + */ + protected function get_batch_data() { + // Get existing batch (stores both data and flush timestamp in one transient). + $batch_data = \get_transient( 'option_optimizer_batch' ); + if ( ! \is_array( $batch_data ) || ! isset( $batch_data['options'], $batch_data['last_flush'] ) ) { + $batch_data = [ + 'options' => [], + 'last_flush' => \time(), + ]; + } + + return $batch_data; + } + + /** + * Get the flush interval. + * + * @return int + */ + protected function get_flush_interval() { + return (int) \apply_filters( 'aaa_option_optimizer_flush_interval', 5 * MINUTE_IN_SECONDS ); + } + + /** + * Flush the batched data to the main option_optimizer option. + * + * @param array $batch The batched option usage data. + * + * @return void + */ + protected function flush_batch_to_option( $batch ) { + + if ( empty( $batch ) ) { + return; + } + + $option_optimizer = \get_option( 'option_optimizer', [ 'used_options' => [] ] ); + + foreach ( $batch as $option_name => $count ) { + if ( ! isset( $option_optimizer['used_options'][ $option_name ] ) ) { + $option_optimizer['used_options'][ $option_name ] = 0; + } + $option_optimizer['used_options'][ $option_name ] += $count; } - // Update the 'option_optimizer' option with the new list. - update_option( 'option_optimizer', $option_optimizer, false ); + \update_option( 'option_optimizer', $option_optimizer, false ); } } diff --git a/uninstall.php b/uninstall.php index 4fa17e2..08493b6 100644 --- a/uninstall.php +++ b/uninstall.php @@ -12,5 +12,8 @@ exit; } +// Delete the batch transient. +delete_transient( 'option_optimizer_batch' ); + // Delete the plugin option. delete_option( 'option_optimizer' ); From 8ba82cd0cf48f4cfd1c8e2434435efbf8d8e4e5a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 11 Dec 2025 09:57:00 +0100 Subject: [PATCH 14/46] Bump "Tested up to" version to 6.9 --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index 1a0eb9d..c3f0b6f 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: joostdevalk Tags: options, database, cleanup Requires at least: 6.6 -Tested up to: 6.8 +Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.5.1 License: GPL3+ From 7aa92882e85bdc9d580bd5236bf975a500687253 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 11 Dec 2025 10:30:11 +0100 Subject: [PATCH 15/46] hello custom table --- aaa-option-optimizer.php | 49 +++++++--- src/class-database.php | 200 +++++++++++++++++++++++++++++++++++++++ src/class-plugin.php | 40 ++------ src/class-rest.php | 15 ++- uninstall.php | 11 ++- 5 files changed, 259 insertions(+), 56 deletions(-) create mode 100644 src/class-database.php diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index ef82da5..190a272 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -27,12 +27,19 @@ register_deactivation_hook( __FILE__, 'aaa_option_optimizer_deactivation' ); /** - * Activation hooked function to store start stats. + * Activation hooked function to store start stats and create table. * * @return void */ function aaa_option_optimizer_activation() { global $wpdb; + + // Create the custom table. + Emilia\OptionOptimizer\Database::create_table(); + + // Migrate existing data if present. + Emilia\OptionOptimizer\Database::maybe_migrate(); + $autoload_values = \wp_autoload_values_to_autoload(); $placeholders = implode( ',', array_fill( 0, count( $autoload_values ), '%s' ) ); @@ -42,16 +49,19 @@ function aaa_option_optimizer_activation() { ); // phpcs:enable WordPress.DB - update_option( - 'option_optimizer', - [ - 'starting_point_kb' => ( $result->autoload_size / 1024 ), - 'starting_point_num' => $result->count, - 'starting_point_date' => current_time( 'mysql' ), - 'used_options' => [], - ], - false - ); + // Only set starting point if not already set (preserve existing data). + $existing = get_option( 'option_optimizer' ); + if ( empty( $existing['starting_point_date'] ) ) { + update_option( + 'option_optimizer', + [ + 'starting_point_kb' => ( $result->autoload_size / 1024 ), + 'starting_point_num' => $result->count, + 'starting_point_date' => current_time( 'mysql' ), + ], + false + ); + } } /** @@ -64,6 +74,23 @@ function aaa_option_optimizer_deactivation() { update_option( 'option_optimizer', $aaa_option_value, false ); } +/** + * Ensure database table exists and migrate data if needed. + * Runs on plugins_loaded to handle existing installs that don't trigger activation. + * + * @return void + */ +function aaa_option_optimizer_maybe_upgrade() { + // Check if table exists, create if not. + if ( ! Emilia\OptionOptimizer\Database::table_exists() ) { + Emilia\OptionOptimizer\Database::create_table(); + } + + // Migrate existing data if present. + Emilia\OptionOptimizer\Database::maybe_migrate(); +} +add_action( 'plugins_loaded', 'aaa_option_optimizer_maybe_upgrade' ); + /** * Initializes the plugin. * diff --git a/src/class-database.php b/src/class-database.php new file mode 100644 index 0000000..c4ff0e2 --- /dev/null +++ b/src/class-database.php @@ -0,0 +1,200 @@ +prefix . self::TABLE_NAME; + } + + /** + * Create the custom table. + * + * @return void + */ + public static function create_table() { + global $wpdb; + + $table_name = self::get_table_name(); + $charset_collate = $wpdb->get_charset_collate(); + + $sql = "CREATE TABLE {$table_name} ( + option_name VARCHAR(191) NOT NULL, + access_count BIGINT UNSIGNED DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (option_name) + ) {$charset_collate};"; + + require_once ABSPATH . 'wp-admin/includes/upgrade.php'; + \dbDelta( $sql ); + } + + /** + * Drop the custom table. + * + * @return void + */ + public static function drop_table() { + global $wpdb; + + $table_name = self::get_table_name(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Table name is safe (from constant). + $wpdb->query( "DROP TABLE IF EXISTS {$table_name}" ); + } + + /** + * Check if the table exists. + * + * @return bool + */ + public static function table_exists() { + global $wpdb; + + $table_name = self::get_table_name(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching + return $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) === $table_name; + } + + /** + * Migrate data from the old option format to the custom table. + * + * @return void + */ + public static function maybe_migrate() { + $option_data = \get_option( 'option_optimizer' ); + + // No data or already migrated (no used_options key). + if ( ! \is_array( $option_data ) || ! isset( $option_data['used_options'] ) ) { + return; + } + + // Ensure table exists. + if ( ! self::table_exists() ) { + self::create_table(); + } + + // Batch insert old data to custom table. + if ( ! empty( $option_data['used_options'] ) ) { + self::batch_insert( $option_data['used_options'] ); + } + + // Remove used_options from the option, keep metadata. + unset( $option_data['used_options'] ); + \update_option( 'option_optimizer', $option_data, false ); + } + + /** + * Batch insert or update option counts. + * + * @param array $options Array of option_name => count. + * + * @return void + */ + public static function batch_insert( $options ) { + global $wpdb; + + if ( empty( $options ) ) { + return; + } + + $table_name = self::get_table_name(); + $values = []; + $placeholders = []; + + foreach ( $options as $option_name => $count ) { + $placeholders[] = '(%s, %d, NOW())'; + $values[] = $option_name; + $values[] = (int) $count; + } + + $sql = "INSERT INTO {$table_name} (option_name, access_count, created_at) + VALUES " . implode( ', ', $placeholders ) . ' + ON DUPLICATE KEY UPDATE access_count = access_count + VALUES(access_count)'; + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared + $wpdb->query( $wpdb->prepare( $sql, ...$values ) ); + } + + /** + * Get all tracked options as an associative array. + * + * @return array Array of option_name => access_count. + */ + public static function get_tracked_options() { + global $wpdb; + + $table_name = self::get_table_name(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Table name is safe (from constant). + $results = $wpdb->get_results( "SELECT option_name, access_count FROM {$table_name}", ARRAY_A ); + + if ( empty( $results ) ) { + return []; + } + + $options = []; + foreach ( $results as $row ) { + $options[ $row['option_name'] ] = (int) $row['access_count']; + } + + return $options; + } + + /** + * Get tracked option names as a keyed array for efficient lookups. + * + * @return array Array of option_name => true. + */ + public static function get_tracked_option_keys() { + global $wpdb; + + $table_name = self::get_table_name(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Table name is safe (from constant). + $option_names = $wpdb->get_col( "SELECT option_name FROM {$table_name}" ); + + if ( empty( $option_names ) ) { + return []; + } + + return array_fill_keys( $option_names, true ); + } + + /** + * Clear all tracked options from the table. + * + * @return void + */ + public static function clear_tracked_options() { + global $wpdb; + + $table_name = self::get_table_name(); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Table name is safe (from constant). + $wpdb->query( "TRUNCATE TABLE {$table_name}" ); + } +} diff --git a/src/class-plugin.php b/src/class-plugin.php index db60b33..b8413f1 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -121,9 +121,9 @@ protected function add_option_usage( $option_name ) { } /** - * Update the 'option_optimizer' option with the list of used options at the end of the page load. + * Update the tracked options at the end of the page load. * - * Uses transient batching to reduce database writes - only flushes to the main option + * Uses transient batching to reduce database writes - only flushes to the custom table * every 5 minutes instead of on every request. * * @return void @@ -134,13 +134,10 @@ public function update_tracked_options() { return; } - // Handle reset: clear batch and main option. + // Handle reset: clear batch and custom table. if ( $this->should_reset ) { \delete_transient( 'option_optimizer_batch' ); - - $option_optimizer = \get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $option_optimizer['used_options'] = []; - \update_option( 'option_optimizer', $option_optimizer, false ); + Database::clear_tracked_options(); return; } @@ -158,9 +155,9 @@ public function update_tracked_options() { // Check if it's time to flush the batch. $should_flush = ( \time() - $batch_data['last_flush'] ) >= $this->get_flush_interval(); - // Flush batch to main option every 5 minutes. + // Flush batch to custom table every 5 minutes. if ( ! empty( $batch_data['options'] ) && $should_flush ) { - $this->flush_batch_to_option( $batch_data['options'] ); + Database::batch_insert( $batch_data['options'] ); // Reset the batch data. $batch_data = [ @@ -199,29 +196,4 @@ protected function get_batch_data() { protected function get_flush_interval() { return (int) \apply_filters( 'aaa_option_optimizer_flush_interval', 5 * MINUTE_IN_SECONDS ); } - - /** - * Flush the batched data to the main option_optimizer option. - * - * @param array $batch The batched option usage data. - * - * @return void - */ - protected function flush_batch_to_option( $batch ) { - - if ( empty( $batch ) ) { - return; - } - - $option_optimizer = \get_option( 'option_optimizer', [ 'used_options' => [] ] ); - - foreach ( $batch as $option_name => $count ) { - if ( ! isset( $option_optimizer['used_options'][ $option_name ] ) ) { - $option_optimizer['used_options'][ $option_name ] = 0; - } - $option_optimizer['used_options'][ $option_name ] += $count; - } - - \update_option( 'option_optimizer', $option_optimizer, false ); - } } diff --git a/src/class-rest.php b/src/class-rest.php index 9310487..9aaf07d 100644 --- a/src/class-rest.php +++ b/src/class-rest.php @@ -229,9 +229,8 @@ public function get_unused_options() { global $wpdb; - // Load used options from option_optimizer. - $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $used_options = $option_optimizer['used_options']; + // Load used options from custom table. + $used_options = Database::get_tracked_option_keys(); $query = " SELECT option_name @@ -335,9 +334,8 @@ public function get_used_not_autoloaded_options() { global $wpdb; - // Load used options from option_optimizer. - $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $used_options = $option_optimizer['used_options']; + // Load used options from custom table (with counts). + $used_options = Database::get_tracked_options(); if ( empty( $used_options ) ) { return new \WP_REST_Response( @@ -460,9 +458,8 @@ public function get_options_that_do_not_exist() { global $wpdb; - // Load used options. - $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $used_options = $option_optimizer['used_options']; + // Load used options from custom table (with counts). + $used_options = Database::get_tracked_options(); if ( empty( $used_options ) ) { return new \WP_REST_Response( diff --git a/uninstall.php b/uninstall.php index 08493b6..b954086 100644 --- a/uninstall.php +++ b/uninstall.php @@ -2,9 +2,9 @@ /** * Uninstall the plugin. * - * Delete the plugin option. + * Delete the plugin option and custom table. * - * @package Progress_Planner + * @package Emilia\OptionOptimizer */ // If uninstall not called from WordPress, then exit. @@ -12,6 +12,13 @@ exit; } +global $wpdb; + +// Drop the custom table. +$aaa_option_optimizer_table = $wpdb->prefix . 'option_optimizer_tracked'; +// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Table name is safe (from constant prefix). +$wpdb->query( "DROP TABLE IF EXISTS {$aaa_option_optimizer_table}" ); + // Delete the batch transient. delete_transient( 'option_optimizer_batch' ); From 66dd174e3dc10ccf6f32a9a545d3ab65d05610fc Mon Sep 17 00:00:00 2001 From: Ari Stathopoulos Date: Thu, 11 Dec 2025 12:12:31 +0200 Subject: [PATCH 16/46] Apply suggestion from @aristath --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index c3f0b6f..aaa4514 100644 --- a/readme.txt +++ b/readme.txt @@ -1,7 +1,7 @@ === AAA Option Optimizer === Contributors: joostdevalk Tags: options, database, cleanup -Requires at least: 6.6 +Requires at least: 6.7 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.5.1 From f76ad1b8afaf2655c41b82626ad3df4cedee031b Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 11 Dec 2025 12:30:05 +0100 Subject: [PATCH 17/46] move settings to new tab on plugin page --- src/class-admin-page.php | 157 ++++++++++++++++++++++- src/class-plugin.php | 5 +- src/class-settings-page.php | 246 ------------------------------------ 3 files changed, 157 insertions(+), 251 deletions(-) delete mode 100644 src/class-settings-page.php diff --git a/src/class-admin-page.php b/src/class-admin-page.php index 611f8a4..e7b4577 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -12,6 +12,11 @@ */ class Admin_Page { + /** + * Option name for settings. + */ + const OPTION_NAME = 'option_optimizer'; + /** * Register hooks. * @@ -23,6 +28,79 @@ public function register_hooks() { \add_action( 'admin_menu', [ $this, 'add_admin_page' ] ); \add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] ); + \add_action( 'admin_init', [ $this, 'register_settings' ] ); + } + + /** + * Register settings. + * + * @return void + */ + public function register_settings(): void { + \register_setting( + 'aaa_option_optimizer_settings_group', + self::OPTION_NAME, + [ + 'sanitize_callback' => [ $this, 'sanitize_settings' ], + ] + ); + } + + /** + * Sanitize settings. + * + * This merges the settings into the existing option_optimizer option structure. + * + * @param array $input Settings input. + * @return array Sanitized settings merged with existing option data. + */ + public function sanitize_settings( $input ): array { + // Get the existing option_optimizer data to preserve other keys. + $existing = \get_option( self::OPTION_NAME, [] ); + + // Initialize settings array if it doesn't exist. + if ( ! isset( $existing['settings'] ) ) { + $existing['settings'] = []; + } + + // Sanitize the option_tracking setting. + $option_tracking = 'legacy'; + if ( isset( $input['settings']['option_tracking'] ) ) { + $input_option_tracking = \sanitize_text_field( $input['settings']['option_tracking'] ); + if ( \in_array( $input_option_tracking, [ 'pre_option', 'legacy' ], true ) ) { + $option_tracking = $input_option_tracking; + } + } + $existing['settings']['option_tracking'] = $option_tracking; + + // Return the full option structure with merged settings. + return $existing; + } + + /** + * Get settings. + * + * @return array Settings from the settings subarray. + */ + public static function get_settings(): array { + $defaults = [ + 'option_tracking' => 'legacy', + ]; + + $option_optimizer = \get_option( self::OPTION_NAME, [] ); + $settings = isset( $option_optimizer['settings'] ) ? $option_optimizer['settings'] : []; + + return \wp_parse_args( $settings, $defaults ); + } + + /** + * Get option tracking. + * + * @return string Option tracking. + */ + public static function get_option_tracking(): string { + $settings = self::get_settings(); + return $settings['option_tracking'] ?? 'legacy'; } /** @@ -73,7 +151,7 @@ public function add_admin_page() { * @return void */ public function enqueue_scripts( $hook ) { - if ( $hook !== 'tools_page_aaa-option-optimizer' && $hook !== 'tools_page_aaa-option-optimizer-settings' ) { + if ( $hook !== 'tools_page_aaa-option-optimizer' ) { return; } @@ -343,8 +421,85 @@ public function render_admin_page_ajax() {
+ + + +
+ render_settings_tab( $option_optimizer, $result ); ?> +
$option_optimizer The option optimizer data. + * @param object $result The database query result with current stats. + * + * @return void + */ + private function render_settings_tab( $option_optimizer, $result ): void { + $settings = self::get_settings(); + + // Check if settings were saved. + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce check not needed here. + if ( isset( $_GET['settings-updated'] ) ) { + ?> +
+

+
+ +
+

+
+ + + + +

+

+ count ), + \number_format( ( $result->autoload_size / 1024 ), 1 ) + ); + ?> +

+ +
+ +
+ +

+
+ +

+
+ + +
+ +
+ accessed_options = \get_option( 'option_optimizer', [ 'used_options' => [] ] )['used_options']; - if ( Settings_Page::get_option_tracking() === 'pre_option' ) { + if ( Admin_Page::get_option_tracking() === 'pre_option' ) { \add_filter( 'pre_option', [ $this, 'monitor_option_accesses_pre_option' ], PHP_INT_MAX, 2 ); } else { // Hook into all actions and filters to monitor option accesses. @@ -81,9 +81,6 @@ public function register_hooks() { // Register the admin page. $admin_page = new Admin_Page(); $admin_page->register_hooks(); - - // Register the settings page. - Settings_Page::register_hooks(); } } diff --git a/src/class-settings-page.php b/src/class-settings-page.php deleted file mode 100644 index 3ffb055..0000000 --- a/src/class-settings-page.php +++ /dev/null @@ -1,246 +0,0 @@ - [ __CLASS__, 'sanitize_settings' ], - ] - ); - - add_settings_section( - 'aaa_option_optimizer_stats_section', - __( 'Stats', 'aaa-option-optimizer' ), - [ __CLASS__, 'render_stats_section' ], - 'aaa-option-optimizer-settings' - ); - - add_settings_section( - 'aaa_option_optimizer_tracking_section', - __( 'Option tracking', 'aaa-option-optimizer' ), - [ __CLASS__, 'render_tracking_section' ], - 'aaa-option-optimizer-settings' - ); - } - - /** - * Render settings page - * - * @return void - */ - public static function render_settings_page(): void { - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - // Check if settings were saved. - if ( isset( $_GET['settings-updated'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing -- Nonce check not needed here. - add_settings_error( - 'aaa_option_optimizer_messages', - 'aaa_option_optimizer_message', - esc_html__( 'Settings saved.', 'aaa-option-optimizer' ), - 'updated' - ); - } - - settings_errors( 'aaa_option_optimizer_messages' ); - ?> -
-

-
- -
-
- -

-
- - -
- [] ] ); - - global $wpdb; - $autoload_values = \wp_autoload_values_to_autoload(); - $placeholders = \implode( ',', \array_fill( 0, \count( $autoload_values ), '%s' ) ); - - // phpcs:disable WordPress.DB - $result = $wpdb->get_row( - $wpdb->prepare( "SELECT count(*) AS count, SUM( LENGTH( option_value ) ) as autoload_size FROM {$wpdb->options} WHERE autoload IN ( $placeholders )", $autoload_values ) - ); - // phpcs:enable WordPress.DB - ?> -

- count ), - \number_format( ( $result->autoload_size / 1024 ), 1 ) - ); - ?> -

- -
-

-
- - - - -
- -
- $input Settings input. - * @return array Sanitized settings merged with existing option data. - */ - public static function sanitize_settings( $input ): array { - // Get the existing option_optimizer data to preserve other keys. - $existing = get_option( self::OPTION_NAME, [] ); - - // Initialize settings array if it doesn't exist. - if ( ! isset( $existing['settings'] ) ) { - $existing['settings'] = []; - } - - // Sanitize the option_tracking setting. - $option_tracking = 'legacy'; - if ( isset( $input['settings']['option_tracking'] ) ) { - $input_option_tracking = \sanitize_text_field( $input['settings']['option_tracking'] ); - if ( \in_array( $input_option_tracking, [ 'pre_option', 'legacy' ], true ) ) { - $option_tracking = $input_option_tracking; - } - } - $existing['settings']['option_tracking'] = $option_tracking; - - // Return the full option structure with merged settings. - return $existing; - } - - /** - * Get settings - * - * @return array Settings from the settings subarray. - */ - public static function get_settings(): array { - $defaults = [ - 'option_tracking' => 'legacy', - ]; - - $option_optimizer = get_option( self::OPTION_NAME, [] ); - $settings = isset( $option_optimizer['settings'] ) ? $option_optimizer['settings'] : []; - - return wp_parse_args( $settings, $defaults ); - } - - /** - * Get option tracking - * - * @return string Option tracking. - */ - public static function get_option_tracking(): string { - $settings = self::get_settings(); - return $settings['option_tracking'] ?? 'legacy'; - } -} From e04afebea5c708964e46c24053804d332a222d8e Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 11 Dec 2025 12:57:33 +0100 Subject: [PATCH 18/46] remove float: right; from the reset button --- css/style.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/css/style.css b/css/style.css index f3d5fe6..92fb6e1 100644 --- a/css/style.css +++ b/css/style.css @@ -92,9 +92,6 @@ div.dt-container .dt-input { .aaa-option-optimizer-popover__close:hover { cursor: pointer; } -.aaa-option-optimizer-reset { - float: right; -} .aaa-option-optimizer-tabs { clear: both; display: flex; From 86c650c8899bd8d0fa10ed1e63becd703431fc24 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 12 Dec 2025 09:01:43 +0100 Subject: [PATCH 19/46] change default to 'pre_option' (instead of 'legacy') --- aaa-option-optimizer.php | 2 +- src/class-admin-page.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index 47d19c2..e13fe0c 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -50,7 +50,7 @@ function aaa_option_optimizer_activation() { 'starting_point_date' => current_time( 'mysql' ), 'used_options' => [], 'settings' => [ - 'option_tracking' => 'legacy', + 'option_tracking' => 'pre_option', ], ], false diff --git a/src/class-admin-page.php b/src/class-admin-page.php index e7b4577..4e7d6dd 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -64,7 +64,7 @@ public function sanitize_settings( $input ): array { } // Sanitize the option_tracking setting. - $option_tracking = 'legacy'; + $option_tracking = 'pre_option'; if ( isset( $input['settings']['option_tracking'] ) ) { $input_option_tracking = \sanitize_text_field( $input['settings']['option_tracking'] ); if ( \in_array( $input_option_tracking, [ 'pre_option', 'legacy' ], true ) ) { @@ -84,7 +84,7 @@ public function sanitize_settings( $input ): array { */ public static function get_settings(): array { $defaults = [ - 'option_tracking' => 'legacy', + 'option_tracking' => 'pre_option', ]; $option_optimizer = \get_option( self::OPTION_NAME, [] ); @@ -100,7 +100,7 @@ public static function get_settings(): array { */ public static function get_option_tracking(): string { $settings = self::get_settings(); - return $settings['option_tracking'] ?? 'legacy'; + return $settings['option_tracking'] ?? 'pre_option'; } /** From fdcfd13fe599c3b82be96284561eb387b01a0b02 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 12 Dec 2025 09:59:17 +0100 Subject: [PATCH 20/46] change namespace --- aaa-option-optimizer.php | 14 +++++++------- src/autoload.php | 4 ++-- src/class-admin-page.php | 4 ++-- src/class-database.php | 4 ++-- src/class-map-plugin-to-options.php | 6 +++--- src/class-plugin.php | 4 ++-- src/class-rest.php | 4 ++-- uninstall.php | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index 190a272..cfd6bf9 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -2,7 +2,7 @@ /** * Plugin that tracks autoloaded options usage and allows the user to optimize them. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer * * Plugin Name: AAA Option Optimizer * Plugin URI: https://joost.blog/plugins/aaa-option-optimizer/ @@ -35,10 +35,10 @@ function aaa_option_optimizer_activation() { global $wpdb; // Create the custom table. - Emilia\OptionOptimizer\Database::create_table(); + Progress_Planner\OptionOptimizer\Database::create_table(); // Migrate existing data if present. - Emilia\OptionOptimizer\Database::maybe_migrate(); + Progress_Planner\OptionOptimizer\Database::maybe_migrate(); $autoload_values = \wp_autoload_values_to_autoload(); $placeholders = implode( ',', array_fill( 0, count( $autoload_values ), '%s' ) ); @@ -82,12 +82,12 @@ function aaa_option_optimizer_deactivation() { */ function aaa_option_optimizer_maybe_upgrade() { // Check if table exists, create if not. - if ( ! Emilia\OptionOptimizer\Database::table_exists() ) { - Emilia\OptionOptimizer\Database::create_table(); + if ( ! Progress_Planner\OptionOptimizer\Database::table_exists() ) { + Progress_Planner\OptionOptimizer\Database::create_table(); } // Migrate existing data if present. - Emilia\OptionOptimizer\Database::maybe_migrate(); + Progress_Planner\OptionOptimizer\Database::maybe_migrate(); } add_action( 'plugins_loaded', 'aaa_option_optimizer_maybe_upgrade' ); @@ -97,7 +97,7 @@ function aaa_option_optimizer_maybe_upgrade() { * @return void */ function aaa_option_optimizer_init() { - $optimizer = new Emilia\OptionOptimizer\Plugin(); + $optimizer = new Progress_Planner\OptionOptimizer\Plugin(); $optimizer->register_hooks(); } diff --git a/src/autoload.php b/src/autoload.php index 502fda2..4f04541 100644 --- a/src/autoload.php +++ b/src/autoload.php @@ -2,12 +2,12 @@ /** * Autoload PHP classes for the plugin. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ spl_autoload_register( function ( $class_name ) { - $prefix = 'Emilia\\OptionOptimizer\\'; + $prefix = 'Progress_Planner\\OptionOptimizer\\'; if ( 0 !== \strpos( $class_name, $prefix ) ) { return; diff --git a/src/class-admin-page.php b/src/class-admin-page.php index ea476fe..aecc969 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -2,10 +2,10 @@ /** * Admin page functionality for AAA Option Optimizer. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ -namespace Emilia\OptionOptimizer; +namespace Progress_Planner\OptionOptimizer; /** * Admin page functionality for AAA Option Optimizer. diff --git a/src/class-database.php b/src/class-database.php index c4ff0e2..7244047 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -2,10 +2,10 @@ /** * Database functionality for AAA Option Optimizer. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ -namespace Emilia\OptionOptimizer; +namespace Progress_Planner\OptionOptimizer; /** * Handles custom database table for tracking options. diff --git a/src/class-map-plugin-to-options.php b/src/class-map-plugin-to-options.php index 2732f9a..799d8fe 100644 --- a/src/class-map-plugin-to-options.php +++ b/src/class-map-plugin-to-options.php @@ -2,15 +2,15 @@ /** * Functionality to map options to plugins. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ -namespace Emilia\OptionOptimizer; +namespace Progress_Planner\OptionOptimizer; /** * Class Map_Plugin_To_Options * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ class Map_Plugin_To_Options { /** diff --git a/src/class-plugin.php b/src/class-plugin.php index b8413f1..63c3a7c 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -2,10 +2,10 @@ /** * Plugin functionality for AAA Option Optimizer. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ -namespace Emilia\OptionOptimizer; +namespace Progress_Planner\OptionOptimizer; /** * Core functionality of AAA Option Optimizer. diff --git a/src/class-rest.php b/src/class-rest.php index 9aaf07d..f1a550a 100644 --- a/src/class-rest.php +++ b/src/class-rest.php @@ -2,10 +2,10 @@ /** * REST functionality for AAA Option Optimizer. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ -namespace Emilia\OptionOptimizer; +namespace Progress_Planner\OptionOptimizer; use WP_Error; use WP_REST_Request; diff --git a/uninstall.php b/uninstall.php index b954086..05bf9fe 100644 --- a/uninstall.php +++ b/uninstall.php @@ -4,7 +4,7 @@ * * Delete the plugin option and custom table. * - * @package Emilia\OptionOptimizer + * @package Progress_Planner\OptionOptimizer */ // If uninstall not called from WordPress, then exit. From fddd0dc03e61a5e3090afcea9d308eb515519a6a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 12 Dec 2025 10:02:15 +0100 Subject: [PATCH 21/46] update links and phpcs prefix --- README.md | 14 +++++++------- composer.json | 2 +- phpcs.xml.dist | 2 +- readme.txt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7692f71..463dd10 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![CS](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/cs.yml/badge.svg)](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/cs.yml) -[![PHPStan](https://github.com/Emilia-Capital/aaa-option-optimizer/actions/workflows/phpstan.yml/badge.svg)](https://github.com/Emilia-Capital/aaa-option-optimizer/actions/workflows/phpstan.yml) -[![Lint](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/lint.yml/badge.svg)](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/lint.yml) -[![Security](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/security.yml/badge.svg)](https://github.com/emilia-capital/aaa-option-optimizer/actions/workflows/security.yml) +[![CS](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/cs.yml/badge.svg)](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/cs.yml) +[![PHPStan](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/phpstan.yml/badge.svg)](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/phpstan.yml) +[![Lint](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/lint.yml/badge.svg)](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/lint.yml) +[![Security](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/security.yml/badge.svg)](https://github.com/ProgressPlanner/aaa-option-optimizer/actions/workflows/security.yml) [![WordPress Plugin Version](https://img.shields.io/wordpress/plugin/v/aaa-option-optimizer.svg)](https://wordpress.org/plugins/aaa-option-optimizer/) ![WordPress Plugin: Tested WP Version](https://img.shields.io/wordpress/plugin/tested/aaa-option-optimizer.svg) @@ -10,7 +10,7 @@ [![WordPress Plugin Rating](https://img.shields.io/wordpress/plugin/stars/aaa-option-optimizer.svg)](https://wordpress.org/support/plugin/aaa-option-optimizer/reviews/) [![GitHub](https://img.shields.io/github/license/ProgressPlanner/aaa-option-optimizer.svg)](https://github.com/ProgressPlanner/aaa-option-optimizer/blob/main/LICENSE) -[![Try this plugin on the WordPress playground](https://img.shields.io/badge/Try%20this%20plugin%20on%20the%20WordPress%20Playground-%23117AC9.svg?style=for-the-badge&logo=WordPress&logoColor=ddd)](https://playground.wordpress.net/#%7B%22landingPage%22:%22/wp-admin/tools.php?page=aaa-option-optimizer%22,%22features%22:%7B%22networking%22:true%7D,%22steps%22:%5B%7B%22step%22:%22defineWpConfigConsts%22,%22consts%22:%7B%22IS_PLAYGROUND_PREVIEW%22:true%7D%7D,%7B%22step%22:%22login%22,%22username%22:%22admin%22,%22password%22:%22password%22%7D,%7B%22step%22:%22installPlugin%22,%22pluginZipFile%22:%7B%22resource%22:%22url%22,%22url%22:%22https://bypass-cors.altha.workers.dev/https://github.com/Emilia-Capital/aaa-option-optimizer/archive/refs/heads/develop.zip%22%7D,%22options%22:%7B%22activate%22:true%7D%7D%5D%7D) +[![Try this plugin on the WordPress playground](https://img.shields.io/badge/Try%20this%20plugin%20on%20the%20WordPress%20Playground-%23117AC9.svg?style=for-the-badge&logo=WordPress&logoColor=ddd)](https://playground.wordpress.net/#%7B%22landingPage%22:%22/wp-admin/tools.php?page=aaa-option-optimizer%22,%22features%22:%7B%22networking%22:true%7D,%22steps%22:%5B%7B%22step%22:%22defineWpConfigConsts%22,%22consts%22:%7B%22IS_PLAYGROUND_PREVIEW%22:true%7D%7D,%7B%22step%22:%22login%22,%22username%22:%22admin%22,%22password%22:%22password%22%7D,%7B%22step%22:%22installPlugin%22,%22pluginZipFile%22:%7B%22resource%22:%22url%22,%22url%22:%22https://bypass-cors.altha.workers.dev/https://github.com/ProgressPlanner/aaa-option-optimizer/archive/refs/heads/develop.zip%22%7D,%22options%22:%7B%22activate%22:true%7D%7D%5D%7D) ![GitHub banner](/.wordpress-org/github_banner_aaaoo_pp.png) @@ -26,7 +26,7 @@ Install this plugin, and go through your entire site. Best is to use it normally ### Why the AAA prefix in the plugin name? -Because the plugin needs to measure options being loaded, it benefits from being loaded itself first. As WordPress loads plugins alphabetically, +Because the plugin needs to measure options being loaded, it benefits from being loaded itself first. As WordPress loads plugins alphabetically, starting the name with AAA made sense. ### Do I need to take precautions? @@ -35,7 +35,7 @@ Yes!! Backup your database. ### How can I add recognized plugins? -Please do a pull request via GitHub on [this file](https://github.com/Emilia-Capital/aaa-option-optimizer/blob/develop/known-plugins/known-plugins.json) in the plugin. +Please do a pull request via GitHub on [this file](https://github.com/ProgressPlanner/aaa-option-optimizer/blob/develop/known-plugins/known-plugins.json) in the plugin. ### How can I report security bugs? diff --git a/composer.json b/composer.json index 68a8d8f..1dd06e8 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "emilia/aaa-option-optimizer", + "name": "progress-planner/aaa-option-optimizer", "description": "Plugin that tracks autoloaded options usage and allows the user to optimize them.", "type": "wordpress-plugin", "license": "GPL-3.0-or-later", diff --git a/phpcs.xml.dist b/phpcs.xml.dist index fffbfd5..902af51 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -108,7 +108,7 @@ - + diff --git a/readme.txt b/readme.txt index aaa4514..74301c3 100644 --- a/readme.txt +++ b/readme.txt @@ -29,7 +29,7 @@ Yes!! Backup your database. = Where can I report bugs? = -Please use [our GitHub](https://github.com/emilia-Capital/aaa-option-optimizer/) for reporting bugs or making code suggestions. Feel free to use the forums for asking questions too, of course. +Please use [our GitHub](https://github.com/ProgressPlanner/aaa-option-optimizer/) for reporting bugs or making code suggestions. Feel free to use the forums for asking questions too, of course. For security issues, please see the next question. @@ -39,7 +39,7 @@ You can report security bugs through the Patchstack Vulnerability Disclosure Pro = How can I add recognized plugins? = -Please do a pull request via GitHub on [this file](https://github.com/Emilia-Capital/aaa-option-optimizer/blob/develop/known-plugins/known-plugins.json) in the plugin. +Please do a pull request via GitHub on [this file](https://github.com/ProgressPlanner/aaa-option-optimizer/blob/develop/known-plugins/known-plugins.json) in the plugin. == Installation == 1. Search for AAA Option Optimizer on the repository. @@ -109,7 +109,7 @@ Implement the missing functionality to create an option with value `false` when = 1.1 = The plugin now recognizes plugins from which the options came (thanks to a great pull by [Rogier Lankhorst](https://profiles.wordpress.org/rogierlankhorst/)). If you're a plugin developer and want your plugin's options -properly recognized, please do a pull request [on this file](https://github.com/Emilia-Capital/aaa-option-optimizer/blob/main/known-plugins/known-plugins.json). +properly recognized, please do a pull request [on this file](https://github.com/ProgressPlanner/aaa-option-optimizer/blob/main/known-plugins/known-plugins.json). Small enhancements: From 1fa44fb3dff50b83d12d57acc51acab2469365e5 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Fri, 12 Dec 2025 10:09:45 +0100 Subject: [PATCH 22/46] Add new plugins and update option prefixes --- known-plugins/known-plugins.json | 74 ++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/known-plugins/known-plugins.json b/known-plugins/known-plugins.json index 0dc3a69..0a1eee3 100644 --- a/known-plugins/known-plugins.json +++ b/known-plugins/known-plugins.json @@ -7,6 +7,10 @@ "name": "Equalize Digital Accessibility Checker", "option_prefixes": ["edac_"] }, + "admin-columns": { + "name": "Admin Columns (Pro)", + "option_prefixes": ["ac_columns_","acp_","ac-","ac_"] + }, "advanced-custom-fields": { "name": "Advanced Custom Fields", "option_prefixes": ["acf_"] @@ -15,6 +19,10 @@ "name": "Affiliate WP", "option_prefixes": ["affwp_"] }, + "akismet": { + "name": "Akismet", + "option_prefixes": ["akismet_"] + }, "all-in-one-seo-pack": { "name": "AIOSEO - The Best WordPress SEO Plugin & Toolkit", "option_prefixes": ["aioseo_","widget_aioseo"] @@ -47,6 +55,10 @@ "name": "Cookie banner plugin for WordPress – Cookiebot CMP by Usercentrics", "option_prefixes": ["cookiebot_", "cookiebot-"] }, + "disable-comments": { + "name": "Disable Comments", + "option_prefixes": ["disable_comment_","disable_comments_"] + }, "duplicate-post": { "name": "Yoast Duplicate Post", "option_prefixes": ["duplicate_post_"] @@ -63,6 +75,10 @@ "name": "Conversios: Google Analytics 4 (GA4), Google Ads, Microsoft Ads, and Multi-Channel Conversion Tracking", "option_prefixes": ["ee_"] }, + "fair": { + "name": "FAIR Connect", + "option_prefixes": ["fair_","_transient_timeout_fair"] + } "fewer-tags": { "name": "Fewer Tags", "option_prefixes": ["fewer_tags"] @@ -73,7 +89,11 @@ }, "generateblocks": { "name": "GenerateBlocks", - "option_prefixes": ["generateblocks_"] + "option_prefixes": ["generateblocks", "generateblocks_", "gb_"] + }, + "generatepress": { + "name": "GeneratePress", + "option_prefixes": ["_generatepress_","generate_"] }, "google-analytics-for-wordpress": { "name": "Google Analytics for WordPress by MonsterInsights", @@ -85,8 +105,16 @@ }, "gravity-forms": { "name": "Gravity Forms", - "option_prefixes": ["gf_","gforms_"] + "option_prefixes": ["gf_","gform_","gforms_","rg_form_","rg_gforms","_transient_timeout_GFCache_","_transient_rg_gforms_"] + }, + "gravity-forms-addon": { + "name": "Gravity Forms Addons", + "option_prefixes": ["gravityformsaddon_"] }, + "gravity-perks": { + "name": "Gravity :Perks", + "option_prefixes": ["gperks_","gwp_"] + }, "woo-billing-with-invoicexpress": { "name": "Invoicing with InvoiceXpress for WooCommerce", "option_prefixes": ["hd_wc_ie_"] @@ -107,6 +135,10 @@ "name": "LiteSpeed Cache", "option_prefixes": ["litespeed-", "_litespeed_", "litespeed."] }, + "log-http-requests": { + "name": "Log HTTP Requests", + "option_prefixes": ["lhr_"] + }, "loginizer": { "name": "Loginizer", "option_prefixes": ["loginizer_"] @@ -119,6 +151,14 @@ "name": "Multibanco, MB WAY, Credit card, Apple Pay, Google Pay, Payshop, Cofidis Pay, and PIX (ifthenpay) for WooCommerce", "option_prefixes": ["cofidispay_ifthen_", "creditcard_ifthen_", "gateway_ifthen_", "mbway_ifthen_", "multibanco_ifthen_", "payshop_"] }, + "next-gen-gallery": { + "name": "Next Gen Gallery", + "option_prefixes": ["ngg_"] + }, + "patchstack": { + "name": "Patchstack Security", + "option_prefixes": ["patchstack_"] + }, "perfmatters": { "name": "Perfmatters", "option_prefixes": ["perfmatters_"] @@ -127,6 +167,10 @@ "name": "Pixel Caffeine", "option_prefixes": ["aepc_"] }, + "plausible": { + "name": "Plausible Analytics", + "option_prefixes": ["plausible_","_transient_timeout_plausible_"] + }, "pojo-accessibility": { "name": "One Click Accessibility", "option_prefixes": ["pojo_a11y"] @@ -141,7 +185,7 @@ }, "progress-planner": { "name": "Progress Planner", - "option_prefixes": ["progress_planner_"] + "option_prefixes": ["progress_planner_", "_transient_timeout_progress_planner_", "_transient_timeout_prpl_","_transient_prpl"] }, "really-simple-ssl": { "name": "Really Simple SSL", @@ -179,18 +223,30 @@ "name": "SliceWP Affiliates", "option_prefixes": ["slicewp_"] }, + "smtp-mailer": { + "name": "SMTP Mailer", + "option_prefixes": ["smtp_mailer_"] + }, "updraft": { "name": "Updraft Plus", "option_prefixes": ["updraft_", "updraftplus_"] }, "yoast": { "name": "Yoast SEO", - "option_prefixes": ["wpseo", "yoast_"] + "option_prefixes": ["wpseo", "yoast_","_transient_timeout_wpseo_","_transient_wpseo_"] }, "feed-kuantokusta-for-woocommerce": { "name": "Feed KuantoKusta for WooCommerce", "option_prefixes": ["wc_feed_kuantokusta_"] }, + "sg-optimizer": { + "name": "Speed Optimizer by Siteground", + "option_prefixes": ["siteground_optimizer_","siteground_data_","sgo_"] + }, + "sg-security": { + "name": "Security Optimizer by Siteground", + "option_prefixes": ["sg_security_", "siteground_security_","siteground_data_","siteground_settings_security","sgs_"] + }, "woo-dpd-pickup": { "name": "DPD / Geopost Pickup and Lockers network for WooCommerce", "option_prefixes": ["woo_dpd_pickup"] @@ -214,6 +270,7 @@ "wordpress": { "name": "WordPress", "option_prefixes": [ + "_transient_wp_", "_site_transient_timeout_available_translations", "_site_transient_timeout_theme_roots", "_site_transient_update_core", @@ -295,6 +352,7 @@ "medium_size_w", "moderation_keys", "moderation_notify", + "nav_menu_options", "new_admin_email", "nonce_key", "nonce_salt", @@ -306,7 +364,9 @@ "posts_per_page", "posts_per_rss", "recently_activated", + "recently_edited", "recovery_keys", + "recovery_mode_email_last_sent", "require_name_email", "rewrite_rules", "rss_use_excerpt", @@ -344,9 +404,11 @@ "users_can_register", "widget_", "wp_attachment_pages_enabled", + "wp_notes_notify", "wp_force_deactivated_plugins", "wp_page_for_privacy_policy", "wp_user_roles", + "wpins_block_notice", "WPLANG" ] }, @@ -366,6 +428,10 @@ "name": "WPML", "option_prefixes": ["_wpml_", "wpml_", "otgs-", "otgs_", "_icl_"] }, + "wp-mail-smtp": { + "name": "WP Mail SMTP", + "option_prefixes": ["wp_mail_smtp_"] + }, "wp-optimize": { "name": "WP Optimize", "option_prefixes": ["wpo_", "wp-optimize"] From d08a4bbef7f232afef41b547fc0b0b1ef9792807 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Fri, 12 Dec 2025 10:13:56 +0100 Subject: [PATCH 23/46] Update known-plugins.json Missing , --- known-plugins/known-plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known-plugins/known-plugins.json b/known-plugins/known-plugins.json index 0a1eee3..8115d55 100644 --- a/known-plugins/known-plugins.json +++ b/known-plugins/known-plugins.json @@ -78,7 +78,7 @@ "fair": { "name": "FAIR Connect", "option_prefixes": ["fair_","_transient_timeout_fair"] - } + }, "fewer-tags": { "name": "Fewer Tags", "option_prefixes": ["fewer_tags"] From eb125cae15c4644a0949d2b7fbd06289163e97c9 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Fri, 12 Dec 2025 10:26:01 +0100 Subject: [PATCH 24/46] Update option prefixes for multiple plugins --- known-plugins/known-plugins.json | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/known-plugins/known-plugins.json b/known-plugins/known-plugins.json index 8115d55..a0d3d9f 100644 --- a/known-plugins/known-plugins.json +++ b/known-plugins/known-plugins.json @@ -9,7 +9,7 @@ }, "admin-columns": { "name": "Admin Columns (Pro)", - "option_prefixes": ["ac_columns_","acp_","ac-","ac_"] + "option_prefixes": ["ac_columns_","acp_","ac-","ac_","_ac_","_acp_"] }, "advanced-custom-fields": { "name": "Advanced Custom Fields", @@ -21,7 +21,7 @@ }, "akismet": { "name": "Akismet", - "option_prefixes": ["akismet_"] + "option_prefixes": ["akismet_","wordpress_api_key"] }, "all-in-one-seo-pack": { "name": "AIOSEO - The Best WordPress SEO Plugin & Toolkit", @@ -89,11 +89,11 @@ }, "generateblocks": { "name": "GenerateBlocks", - "option_prefixes": ["generateblocks", "generateblocks_", "gb_"] + "option_prefixes": ["generateblocks", "generateblocks_", "gb_","default_term_gblocks_"] }, "generatepress": { "name": "GeneratePress", - "option_prefixes": ["_generatepress_","generate_"] + "option_prefixes": ["_generatepress_","generate_","generatepress_","gen_premium_"] }, "google-analytics-for-wordpress": { "name": "Google Analytics for WordPress by MonsterInsights", @@ -105,7 +105,7 @@ }, "gravity-forms": { "name": "Gravity Forms", - "option_prefixes": ["gf_","gform_","gforms_","rg_form_","rg_gforms","_transient_timeout_GFCache_","_transient_rg_gforms_"] + "option_prefixes": ["gf_","gform_","gforms_","rg_form_","rg_gforms","_transient_timeout_GFCache_","_transient_timeout_rg_gforms_","_transient_rg_gforms_","_site_transient_t15s-registry-gforms"] }, "gravity-forms-addon": { "name": "Gravity Forms Addons", @@ -185,7 +185,7 @@ }, "progress-planner": { "name": "Progress Planner", - "option_prefixes": ["progress_planner_", "_transient_timeout_progress_planner_", "_transient_timeout_prpl_","_transient_prpl"] + "option_prefixes": ["progress_planner_", "_transient_timeout_progress_planner_", "_transient_timeout_prpl_","_transient_progress_planner","_transient_prpl"] }, "really-simple-ssl": { "name": "Really Simple SSL", @@ -233,7 +233,7 @@ }, "yoast": { "name": "Yoast SEO", - "option_prefixes": ["wpseo", "yoast_","_transient_timeout_wpseo_","_transient_wpseo_"] + "option_prefixes": ["wpseo", "yoast_","_transient_timeout_wpseo_","_transient_wpseo_","_site_transient_yoast_","_transient_total_unindexed_prominent_words"] }, "feed-kuantokusta-for-woocommerce": { "name": "Feed KuantoKusta for WooCommerce", @@ -241,12 +241,16 @@ }, "sg-optimizer": { "name": "Speed Optimizer by Siteground", - "option_prefixes": ["siteground_optimizer_","siteground_data_","sgo_"] + "option_prefixes": ["siteground_optimizer_","siteground_data_","sgo_","sg_cachepress"] }, "sg-security": { "name": "Security Optimizer by Siteground", "option_prefixes": ["sg_security_", "siteground_security_","siteground_data_","siteground_settings_security","sgs_"] }, + "svg-support": { + "name": "SVG Support", + "option_prefixes": ["bodhi_svgs_"] + }, "woo-dpd-pickup": { "name": "DPD / Geopost Pickup and Lockers network for WooCommerce", "option_prefixes": ["woo_dpd_pickup"] @@ -284,6 +288,7 @@ "auto_update_core_dev", "auto_update_core_major", "auto_update_core_minor", + "auto_update_plugins", "auto_updater.lock", "avatar_default", "avatar_rating", From d80dba73bf6b65a130b42bf329c15067c0043ab8 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Fri, 12 Dec 2025 10:29:18 +0100 Subject: [PATCH 25/46] Add known plugins linting --- .github/workflows/lint.yml | 3 +++ composer.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9e0fcdb..ba843cf 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -67,3 +67,6 @@ jobs: - name: Lint blueprint file run: composer lint-blueprint + + - name: Lint known plugins file + run: composer lint-known-plugins diff --git a/composer.json b/composer.json index 68a8d8f..bf3741c 100644 --- a/composer.json +++ b/composer.json @@ -37,6 +37,9 @@ "lint-blueprint": [ "@php -r \"exit( intval( is_null( json_decode( file_get_contents( './.wordpress-org/blueprints/blueprint.json' ) ) ) ) );\"" ], + "lint-known-plugins": [ + "@php -r \"exit( intval( is_null( json_decode( file_get_contents( './known-plugins/known-plugins.json' ) ) ) ) );\"" + ], "phpstan": [ "@php ./vendor/bin/phpstan analyse --memory-limit=2048M" ] From 56de6befe83a5da739d5843e07f7c38e3fc730b6 Mon Sep 17 00:00:00 2001 From: Joost de Valk Date: Sat, 13 Dec 2025 15:02:26 +0100 Subject: [PATCH 26/46] Fix credits --- aaa-option-optimizer.php | 6 +++--- readme.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index e13fe0c..c568fa6 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -5,12 +5,12 @@ * @package Emilia\OptionOptimizer * * Plugin Name: AAA Option Optimizer - * Plugin URI: https://joost.blog/plugins/aaa-option-optimizer/ + * Plugin URI: https://progressplanner.com/plugins/aaa-option-optimizer/ * Description: Tracks autoloaded options usage and allows the user to optimize them. * Version: 1.5.1 * License: GPL-3.0+ - * Author: Joost de Valk - * Author URI: https://joost.blog/ + * Author: Team Prospress Planner + * Author URI: https://prospressplanner.com/ * Text Domain: aaa-option-optimizer */ diff --git a/readme.txt b/readme.txt index ad7217b..a070888 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ === AAA Option Optimizer === -Contributors: joostdevalk +Contributors: joostdevalk, aristath, filipi Tags: options, database, cleanup Requires at least: 6.7 Tested up to: 6.9 From f6cbdfa9c6ba084c5ed38345ffd192cd3c19eeb1 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 11:34:49 +0100 Subject: [PATCH 27/46] merge count, dont replace --- src/class-plugin.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 88b0f36..0df3325 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -156,7 +156,10 @@ public function update_tracked_options() { // Retrieve the existing option_optimizer data. $option_optimizer = get_option( 'option_optimizer', [ 'used_options' => [] ] ); - $option_optimizer['used_options'] = $this->accessed_options; + foreach ( $this->accessed_options as $option => $count ) { + $option_optimizer['used_options'][ $option ] = + ( $option_optimizer['used_options'][ $option ] ?? 0 ) + $count; + } if ( $this->should_reset ) { $option_optimizer['used_options'] = []; From 4bd187c3c8a9eb0a49ea4c488d7a3fa659f00e55 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 14:33:07 +0100 Subject: [PATCH 28/46] include all plugins, not just those available on first page load --- js/admin-script.js | 72 +++++++++++++++++++++++++++++++++--------- src/class-rest.php | 78 +++++++++++++++++++++++++++++++++------------- 2 files changed, 115 insertions(+), 35 deletions(-) diff --git a/js/admin-script.js b/js/admin-script.js index cbe412a..45cfd25 100644 --- a/js/admin-script.js +++ b/js/admin-script.js @@ -39,12 +39,33 @@ jQuery( document ).ready( function () { return 'option_' + optionName.replace( /\./g, '_' ); } + /** + * Store sources (plugin names) for each table from AJAX responses. + * + * @type {Object} + */ + const tableSources = {}; + + /** + * Creates a column filter setup function bound to a specific table selector. + * + * @param {string} tableSelector - The table selector. + * @return {Function} The filter setup function. + */ + function createColumnFilterSetup( tableSelector ) { + return function () { + setupColumnFilters.call( this, tableSelector ); + }; + } + /** * Initializes the DataTable for the given selector. * * @param {string} selector - The table selector. */ function initializeDataTable( selector ) { + const filterSetup = createColumnFilterSetup( selector ); + const options = { pageLength: 25, autoWidth: false, @@ -54,7 +75,7 @@ jQuery( document ).ready( function () { return generateRowId( data.name ); }, initComplete() { - this.api().columns( 'source:name' ).every( setupColumnFilters ); + this.api().columns( 'source:name' ).every( filterSetup ); }, language: aaaOptionOptimizer.i18n, }; @@ -66,7 +87,10 @@ jQuery( document ).ready( function () { 'aaa-option-optimizer/v1/unused-options', headers: { 'X-WP-Nonce': aaaOptionOptimizer.nonce }, type: 'GET', - dataSrc: 'data', + dataSrc( json ) { + tableSources[ selector ] = json.sources || []; + return json.data; + }, }; options.serverSide = true; options.processing = true; @@ -75,7 +99,7 @@ jQuery( document ).ready( function () { }; options.initComplete = function () { getBulkActionsForm( selector, [ 'autoload-off' ] ).call( this ); - this.api().columns( 'source:name' ).every( setupColumnFilters ); + this.api().columns( 'source:name' ).every( filterSetup ); }; options.order = [ [ 1, 'asc' ] ]; // Order by 2nd column, first column is checkbox. } @@ -87,7 +111,10 @@ jQuery( document ).ready( function () { 'aaa-option-optimizer/v1/used-not-autoloaded-options', headers: { 'X-WP-Nonce': aaaOptionOptimizer.nonce }, type: 'GET', - dataSrc: 'data', + dataSrc( json ) { + tableSources[ selector ] = json.sources || []; + return json.data; + }, }; options.serverSide = true; options.processing = true; @@ -96,7 +123,7 @@ jQuery( document ).ready( function () { }; options.initComplete = function () { getBulkActionsForm( selector, [ 'autoload-on' ] ).call( this ); - this.api().columns( 'source:name' ).every( setupColumnFilters ); + this.api().columns( 'source:name' ).every( filterSetup ); }; options.order = [ [ 1, 'asc' ] ]; // Order by 2nd column, first column is checkbox. } @@ -106,10 +133,16 @@ jQuery( document ).ready( function () { url: `${ aaaOptionOptimizer.root }aaa-option-optimizer/v1/options-that-do-not-exist`, headers: { 'X-WP-Nonce': aaaOptionOptimizer.nonce }, type: 'GET', - dataSrc: 'data', + dataSrc( json ) { + tableSources[ selector ] = json.sources || []; + return json.data; + }, }; options.serverSide = true; options.processing = true; + options.initComplete = function () { + this.api().columns( 'source:name' ).every( filterSetup ); + }; } if ( selector === '#all_options_table' ) { @@ -124,7 +157,7 @@ jQuery( document ).ready( function () { 'autoload-on', 'autoload-off', ] ).call( this ); - this.api().columns( 'source:name' ).every( setupColumnFilters ); + this.api().columns( 'source:name' ).every( filterSetup ); }; options.order = [ [ 1, 'asc' ] ]; // Order by 2nd column, first column is checkbox. } @@ -253,8 +286,10 @@ jQuery( document ).ready( function () { /** * Sets up the column filters for the DataTable. + * + * @param {string} tableSelector - The table selector to get sources from. */ - function setupColumnFilters() { + function setupColumnFilters( tableSelector ) { const column = this; const select = document.createElement( 'select' ); select.add( @@ -266,13 +301,22 @@ jQuery( document ).ready( function () { column.search( select.value, { exact: true } ).draw(); } ); - column - .data() - .unique() - .sort() - .each( function ( d ) { - select.add( new Option( d ) ); + // Use sources from AJAX response if available (for server-side processing), + // otherwise fall back to column data (for client-side processing). + const sources = tableSources[ tableSelector ]; + if ( sources && sources.length > 0 ) { + sources.forEach( function ( source ) { + select.add( new Option( source ) ); } ); + } else { + column + .data() + .unique() + .sort() + .each( function ( d ) { + select.add( new Option( d ) ); + } ); + } } /** diff --git a/src/class-rest.php b/src/class-rest.php index 9310487..5f05733 100644 --- a/src/class-rest.php +++ b/src/class-rest.php @@ -255,6 +255,15 @@ public function get_unused_options() { $autoload_option_keys = array_fill_keys( $autoloaded_option_names, true ); $unused_keys = array_diff_key( $autoload_option_keys, $used_options ); + // Collect all unique sources (plugin names) before any filtering. + $all_sources = []; + foreach ( array_keys( $unused_keys ) as $option_name ) { + $plugin_name = $this->get_plugin_name( $option_name ); + $all_sources[ $plugin_name ] = true; + } + $all_sources = array_keys( $all_sources ); + sort( $all_sources ); + // Apply source filter to unused keys if specified. $filter_by_source = isset( $_GET['columns'][2]['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['columns'][2]['search']['value'] ) ) ) : ''; if ( '' !== $filter_by_source ) { @@ -315,6 +324,7 @@ public function get_unused_options() { 'recordsTotal' => $total_unused, 'recordsFiltered' => $total_unused, 'data' => $response_data, + 'sources' => $all_sources, ], 200 ); @@ -366,6 +376,15 @@ public function get_used_not_autoloaded_options() { // Find used options that are not autoloaded. $non_autoloaded_used_keys = array_diff_key( $used_options, $autoload_option_keys ); + // Collect all unique sources (plugin names) before any filtering. + $all_sources = []; + foreach ( array_keys( $non_autoloaded_used_keys ) as $option_name ) { + $plugin_name = $this->get_plugin_name( $option_name ); + $all_sources[ $plugin_name ] = true; + } + $all_sources = array_keys( $all_sources ); + sort( $all_sources ); + // Filter by source (plugin). $filter_by_source = isset( $_GET['columns'][2]['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['columns'][2]['search']['value'] ) ) ) : ''; if ( '' !== $filter_by_source ) { @@ -391,6 +410,7 @@ function ( $option_name ) use ( $search ) { 'recordsTotal' => 0, 'recordsFiltered' => 0, 'data' => [], + 'sources' => $all_sources, ], 200 ); @@ -442,6 +462,7 @@ function ( $option_name ) use ( $search ) { 'recordsTotal' => $total_filtered, 'recordsFiltered' => $total_filtered, 'data' => $response_data, + 'sources' => $all_sources, ], 200 ); @@ -490,24 +511,6 @@ public function get_options_that_do_not_exist() { // Get used options that are not autoloaded. $non_autoloaded_keys = array_diff_key( $used_options, $autoload_option_keys ); - // Filter by source (plugin). - $filter_by_source = isset( $_GET['columns'][1]['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['columns'][1]['search']['value'] ) ) ) : ''; - if ( '' !== $filter_by_source ) { - $non_autoloaded_keys = $this->filter_by_source( $non_autoloaded_keys, $filter_by_source ); - } - - // Search. - $search = isset( $_GET['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['search']['value'] ) ) ) : ''; - if ( '' !== $search ) { - $non_autoloaded_keys = array_filter( - $non_autoloaded_keys, - function ( $option_name ) use ( $search ) { - return stripos( $option_name, $search ) !== false; - }, - ARRAY_FILTER_USE_KEY - ); - } - if ( empty( $non_autoloaded_keys ) ) { return new \WP_REST_Response( [ @@ -515,6 +518,7 @@ function ( $option_name ) use ( $search ) { 'recordsTotal' => 0, 'recordsFiltered' => 0, 'data' => [], + 'sources' => [], ], 200 ); @@ -532,11 +536,11 @@ function ( $option_name ) use ( $search ) { ); $existing_keys = array_fill_keys( $existing_option_names, true ); - // Filter only those that do NOT exist. - $response_data = []; + // Build array of non-existing options (before any filtering). + $non_existing_options = []; foreach ( $non_autoloaded_keys as $option => $count ) { if ( ! isset( $existing_keys[ $option ] ) ) { - $response_data[] = [ + $non_existing_options[ $option ] = [ 'name' => $option, 'plugin' => $this->get_plugin_name( $option ), 'count' => $count, @@ -545,6 +549,37 @@ function ( $option_name ) use ( $search ) { } } + // Collect all unique sources (plugin names) before any filtering. + $all_sources = []; + foreach ( $non_existing_options as $row ) { + $all_sources[ $row['plugin'] ] = true; + } + $all_sources = array_keys( $all_sources ); + sort( $all_sources ); + + // Filter by source (plugin). + $filter_by_source = isset( $_GET['columns'][1]['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['columns'][1]['search']['value'] ) ) ) : ''; + if ( '' !== $filter_by_source ) { + $non_existing_options = array_filter( + $non_existing_options, + function ( $row ) use ( $filter_by_source ) { + return $row['plugin'] === $filter_by_source; + } + ); + } + + // Search. + $search = isset( $_GET['search']['value'] ) ? trim( \sanitize_text_field( \wp_unslash( $_GET['search']['value'] ) ) ) : ''; + if ( '' !== $search ) { + $non_existing_options = array_filter( + $non_existing_options, + function ( $row ) use ( $search ) { + return stripos( $row['name'], $search ) !== false; + } + ); + } + + $response_data = array_values( $non_existing_options ); $total_filtered = count( $response_data ); // Pagination. @@ -564,6 +599,7 @@ function ( $option_name ) use ( $search ) { 'recordsTotal' => $total_filtered, 'recordsFiltered' => $total_filtered, 'data' => $response_data, + 'sources' => $all_sources, ], 200 ); From 7937cb0c6cc53ba3d1da62650bd254552380598a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 15:00:30 +0100 Subject: [PATCH 29/46] fix composer package conflict --- composer.json | 2 +- composer.lock | 315 ++++++++++++++++++++++++++----------------------- phpcs.xml.dist | 7 +- 3 files changed, 172 insertions(+), 152 deletions(-) diff --git a/composer.json b/composer.json index bf3741c..918fc4f 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "phpstan/phpstan": "^1.10", "szepeviktor/phpstan-wordpress": "^1.3", "phpstan/extension-installer": "^1.3", - "phpcompatibility/php-compatibility": "dev-develop as 9.99.99" + "phpcompatibility/php-compatibility": "^9.3" }, "config": { "allow-plugins": { diff --git a/composer.lock b/composer.lock index caaaa3c..d186fc9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,34 +4,34 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fd7786df413fbfa0ec1e1564845fe06c", + "content-hash": "68e73cf23844dd66f4d8b3b14eef46cd", "packages": [], "packages-dev": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.0.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "4be43904336affa5c2f70744a348312336afd0da" + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", - "reference": "4be43904336affa5c2f70744a348312336afd0da", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1", + "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", + "composer-plugin-api": "^2.2", "php": ">=5.4", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + "squizlabs/php_codesniffer": "^3.1.0 || ^4.0" }, "require-dev": { - "composer/composer": "*", + "composer/composer": "^2.2", "ext-json": "*", "ext-zip": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev", "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", @@ -50,9 +50,9 @@ "authors": [ { "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" }, { "name": "Contributors", @@ -60,7 +60,6 @@ } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", "keywords": [ "PHPCodeSniffer", "PHP_CodeSniffer", @@ -81,9 +80,28 @@ ], "support": { "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2023-01-05T11:28:13+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-11-11T04:32:07+00:00" }, { "name": "php-parallel-lint/php-parallel-lint", @@ -148,27 +166,30 @@ }, { "name": "php-stubs/wordpress-stubs", - "version": "v6.6.0", + "version": "v6.9.0", "source": { "type": "git", "url": "https://github.com/php-stubs/wordpress-stubs.git", - "reference": "86e8753e89d59849276dcdd91b9a7dd78bb4abe2" + "reference": "5171cb6650e6c583a96943fd6ea0dfa3e1089a8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/86e8753e89d59849276dcdd91b9a7dd78bb4abe2", - "reference": "86e8753e89d59849276dcdd91b9a7dd78bb4abe2", + "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/5171cb6650e6c583a96943fd6ea0dfa3e1089a8a", + "reference": "5171cb6650e6c583a96943fd6ea0dfa3e1089a8a", "shasum": "" }, + "conflict": { + "phpdocumentor/reflection-docblock": "5.6.1" + }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^5.5", "php": "^7.4 || ^8.0", "php-stubs/generator": "^0.8.3", "phpdocumentor/reflection-docblock": "^5.4.1", - "phpstan/phpstan": "^1.10.49", + "phpstan/phpstan": "^2.1", "phpunit/phpunit": "^9.5", - "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.0", + "szepeviktor/phpcs-psr-12-neutron-hybrid-ruleset": "^1.1.1", "wp-coding-standards/wpcs": "3.1.0 as 2.3.0" }, "suggest": { @@ -190,51 +211,39 @@ ], "support": { "issues": "https://github.com/php-stubs/wordpress-stubs/issues", - "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.6.0" + "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.0" }, - "time": "2024-07-17T08:50:38+00:00" + "time": "2025-12-03T23:06:24+00:00" }, { "name": "phpcompatibility/php-compatibility", - "version": "dev-develop", + "version": "9.3.5", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "d9ae4b030f174c8f01d400244107e28ad65ec5e1" + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/d9ae4b030f174c8f01d400244107e28ad65ec5e1", - "reference": "d9ae4b030f174c8f01d400244107e28ad65ec5e1", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", "shasum": "" }, "require": { - "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.0.12", - "squizlabs/php_codesniffer": "^3.10.0" + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" }, - "replace": { - "wimg/php-compatibility": "*" + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" }, "require-dev": { - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.3", - "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.1.0", - "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0" + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, - "default-branch": true, "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev", - "dev-develop": "10.x-dev" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-3.0-or-later" @@ -260,54 +269,38 @@ "keywords": [ "compatibility", "phpcs", - "standards", - "static analysis" + "standards" ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "security": "https://github.com/PHPCompatibility/PHPCompatibility/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibility" }, - "funding": [ - { - "url": "https://github.com/PHPCompatibility", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "time": "2024-08-31T21:55:43+00:00" + "time": "2019-12-27T09:44:58+00:00" }, { "name": "phpcompatibility/phpcompatibility-paragonie", - "version": "1.3.2", + "version": "1.3.4", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26" + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", - "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", "shasum": "" }, "require": { "phpcompatibility/php-compatibility": "^9.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "paragonie/random_compat": "dev-master", "paragonie/sodium_compat": "dev-master" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", @@ -337,27 +330,47 @@ ], "support": { "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy", "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" }, - "time": "2022-10-25T01:46:02+00:00" + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-09-19T17:43:28+00:00" }, { "name": "phpcompatibility/phpcompatibility-wp", - "version": "2.1.5", + "version": "2.1.8", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", - "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082" + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/01c1ff2704a58e46f0cb1ca9d06aee07b3589082", - "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/7c8d18b4d90dac9e86b0869a608fa09158e168fa", + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa", "shasum": "" }, "require": { "phpcompatibility/php-compatibility": "^9.0", - "phpcompatibility/phpcompatibility-paragonie": "^1.0" + "phpcompatibility/phpcompatibility-paragonie": "^1.0", + "squizlabs/php_codesniffer": "^3.3" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^1.0" @@ -407,35 +420,39 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" } ], - "time": "2024-04-24T21:37:59+00:00" + "time": "2025-10-18T00:05:59+00:00" }, { "name": "phpcsstandards/phpcsextra", - "version": "1.2.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", - "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489" + "reference": "b598aa890815b8df16363271b659d73280129101" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", - "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/b598aa890815b8df16363271b659d73280129101", + "reference": "b598aa890815b8df16363271b659d73280129101", "shasum": "" }, "require": { "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.0.9", - "squizlabs/php_codesniffer": "^3.8.0" + "phpcsstandards/phpcsutils": "^1.2.0", + "squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.6", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.2.0", "phpcsstandards/phpcsdevtools": "^1.2.1", - "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "type": "phpcodesniffer-standard", "extra": { @@ -485,35 +502,39 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2023-12-08T16:49:07+00:00" + "time": "2025-11-12T23:06:57+00:00" }, { "name": "phpcsstandards/phpcsutils", - "version": "1.0.12", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" + "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", - "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c216317e96c8b3f5932808f9b0f1f7a14e3bbf55", + "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" + "squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1" }, "require-dev": { "ext-filter": "*", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.6", - "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.2.0", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0" }, "type": "phpcodesniffer-standard", "extra": { @@ -550,6 +571,7 @@ "phpcodesniffer-standard", "phpcs", "phpcs3", + "phpcs4", "standards", "static analysis", "tokens", @@ -573,9 +595,13 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2024-05-20T13:34:27+00:00" + "time": "2025-12-08T14:27:58+00:00" }, { "name": "phpstan/extension-installer", @@ -627,16 +653,11 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1" - }, + "version": "1.12.32", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2770dcdf5078d0b0d53f94317e06affe88419aa8", + "reference": "2770dcdf5078d0b0d53f94317e06affe88419aa8", "shasum": "" }, "require": { @@ -681,20 +702,20 @@ "type": "github" } ], - "time": "2024-09-05T16:09:28+00:00" + "time": "2025-09-30T10:16:31+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.2", + "version": "3.13.5", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", "shasum": "" }, "require": { @@ -711,11 +732,6 @@ "bin/phpcs" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" @@ -759,32 +775,36 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2024-07-21T23:26:44+00:00" + "time": "2025-11-04T16:30:35+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -821,7 +841,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0" }, "funding": [ { @@ -832,12 +852,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "szepeviktor/phpstan-wordpress", @@ -904,16 +928,16 @@ }, { "name": "wp-coding-standards/wpcs", - "version": "3.1.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", - "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" + "reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", - "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7795ec6fa05663d716a549d0b44e47ffc8b0d4a6", + "reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6", "shasum": "" }, "require": { @@ -921,17 +945,17 @@ "ext-libxml": "*", "ext-tokenizer": "*", "ext-xmlreader": "*", - "php": ">=5.4", - "phpcsstandards/phpcsextra": "^1.2.1", - "phpcsstandards/phpcsutils": "^1.0.10", - "squizlabs/php_codesniffer": "^3.9.0" + "php": ">=7.2", + "phpcsstandards/phpcsextra": "^1.5.0", + "phpcsstandards/phpcsutils": "^1.1.0", + "squizlabs/php_codesniffer": "^3.13.4" }, "require-dev": { "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^10.0.0@dev", "phpcsstandards/phpcsdevtools": "^1.2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^8.0 || ^9.0" }, "suggest": { "ext-iconv": "For improved results", @@ -966,24 +990,15 @@ "type": "custom" } ], - "time": "2024-03-25T16:39:00+00:00" - } - ], - "aliases": [ - { - "package": "phpcompatibility/php-compatibility", - "version": "dev-develop", - "alias": "9.99.99", - "alias_normalized": "9.99.99.0" + "time": "2025-11-25T12:08:04+00:00" } ], + "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "phpcompatibility/php-compatibility": 20 - }, + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.6.0" + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.9.0" } diff --git a/phpcs.xml.dist b/phpcs.xml.dist index fffbfd5..5b93576 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -109,11 +109,16 @@ - + + + + 0 + + From 96152c93e11bb5b98e8768cc00f1035e4f7fd224 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 15:02:34 +0100 Subject: [PATCH 30/46] update composer.lock --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index d186fc9..68b99dc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "68e73cf23844dd66f4d8b3b14eef46cd", + "content-hash": "b719f200626be0650504e5dddce6534d", "packages": [], "packages-dev": [ { From ee94c4661717b11521f1518853c7c594e5ed5366 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 15:19:12 +0100 Subject: [PATCH 31/46] avoid PHP fatal error in case of downgrade --- src/class-database.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/class-database.php b/src/class-database.php index 7244047..8c0748e 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -102,8 +102,9 @@ public static function maybe_migrate() { self::batch_insert( $option_data['used_options'] ); } - // Remove used_options from the option, keep metadata. - unset( $option_data['used_options'] ); + // Set used_options to an empty array, so we avoid php fatal error in case user decides to downgrade the plugin. + $option_data['used_options'] = []; + \update_option( 'option_optimizer', $option_data, false ); } From 1272145672d5f75a971c1136280aa95200bd0948 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Thu, 18 Dec 2025 15:25:21 +0100 Subject: [PATCH 32/46] adjust migration condition --- src/class-database.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/class-database.php b/src/class-database.php index 8c0748e..b12805f 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -88,7 +88,7 @@ public static function maybe_migrate() { $option_data = \get_option( 'option_optimizer' ); // No data or already migrated (no used_options key). - if ( ! \is_array( $option_data ) || ! isset( $option_data['used_options'] ) ) { + if ( ! \is_array( $option_data ) || empty( $option_data['used_options'] ) ) { return; } @@ -98,9 +98,7 @@ public static function maybe_migrate() { } // Batch insert old data to custom table. - if ( ! empty( $option_data['used_options'] ) ) { - self::batch_insert( $option_data['used_options'] ); - } + self::batch_insert( $option_data['used_options'] ); // Set used_options to an empty array, so we avoid php fatal error in case user decides to downgrade the plugin. $option_data['used_options'] = []; From bc6dc26b8a78b245566758d6e556dadab4db25d1 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 19 Dec 2025 08:41:13 +0100 Subject: [PATCH 33/46] composer.lock --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 68b99dc..d186fc9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b719f200626be0650504e5dddce6534d", + "content-hash": "68e73cf23844dd66f4d8b3b14eef46cd", "packages": [], "packages-dev": [ { From ad54e71309722c60022f3765b37bf80f67733ead Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 19 Dec 2025 08:42:19 +0100 Subject: [PATCH 34/46] one more prefix for phpcs --- phpcs.xml.dist | 1 + 1 file changed, 1 insertion(+) diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 17af8a0..7c4ebd2 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -109,6 +109,7 @@ + From 435c60b2a4dcf9fb0ebda1e55599211f4c601ac7 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 19 Dec 2025 08:43:20 +0100 Subject: [PATCH 35/46] now fix indend phpcs errors --- aaa-option-optimizer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index ccf7b13..e2b59fc 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -59,8 +59,8 @@ function aaa_option_optimizer_activation() { 'starting_point_num' => $result->count, 'starting_point_date' => current_time( 'mysql' ), 'settings' => [ - 'option_tracking' => 'pre_option', - ], + 'option_tracking' => 'pre_option', + ], ], false ); From 328da197b5e93ed63a6d26875166d5102206db6a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 19 Dec 2025 11:05:00 +0100 Subject: [PATCH 36/46] make comparison consistent --- src/class-rest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/class-rest.php b/src/class-rest.php index 5f05733..5934a77 100644 --- a/src/class-rest.php +++ b/src/class-rest.php @@ -563,7 +563,7 @@ public function get_options_that_do_not_exist() { $non_existing_options = array_filter( $non_existing_options, function ( $row ) use ( $filter_by_source ) { - return $row['plugin'] === $filter_by_source; + return false !== stripos( $row['plugin'], $filter_by_source ); } ); } From c813a6e3e34a688c91e132edd2707fb6f634963a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Fri, 19 Dec 2025 13:48:48 +0100 Subject: [PATCH 37/46] split into chunks --- src/class-database.php | 43 +++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/class-database.php b/src/class-database.php index b12805f..7a865bd 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -109,33 +109,46 @@ public static function maybe_migrate() { /** * Batch insert or update option counts. * - * @param array $options Array of option_name => count. + * Splits large datasets into chunks and wraps them in a transaction + * for optimal performance on slow hosts with large datasets. + * + * @param array $options Array of option_name => count. + * @param int $chunk_size Number of options per query. Default 500. * * @return void */ - public static function batch_insert( $options ) { + public static function batch_insert( $options, $chunk_size = 500 ) { global $wpdb; if ( empty( $options ) ) { return; } - $table_name = self::get_table_name(); - $values = []; - $placeholders = []; + $table_name = self::get_table_name(); - foreach ( $options as $option_name => $count ) { - $placeholders[] = '(%s, %d, NOW())'; - $values[] = $option_name; - $values[] = (int) $count; - } + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->query( 'BEGIN' ); + + foreach ( array_chunk( $options, $chunk_size, true ) as $chunk ) { + $values = []; + $placeholders = []; - $sql = "INSERT INTO {$table_name} (option_name, access_count, created_at) - VALUES " . implode( ', ', $placeholders ) . ' - ON DUPLICATE KEY UPDATE access_count = access_count + VALUES(access_count)'; + foreach ( $chunk as $option_name => $count ) { + $placeholders[] = '(%s, %d, NOW())'; + $values[] = $option_name; + $values[] = (int) $count; + } - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( $wpdb->prepare( $sql, ...$values ) ); + $sql = "INSERT INTO {$table_name} (option_name, access_count, created_at) + VALUES " . implode( ', ', $placeholders ) . ' + ON DUPLICATE KEY UPDATE access_count = access_count + VALUES(access_count)'; + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared + $wpdb->query( $wpdb->prepare( $sql, ...$values ) ); + } + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->query( 'COMMIT' ); } /** From 39307c64edb8a65ecc679cca7a4ebde939102112 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 12:49:32 +0100 Subject: [PATCH 38/46] remove batch write, not needed with custom tables --- src/class-plugin.php | 62 +++----------------------------------------- 1 file changed, 4 insertions(+), 58 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index cd7b7e8..8961968 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -144,9 +144,6 @@ protected function add_option_usage( $option_name ) { /** * Update the tracked options at the end of the page load. * - * Uses transient batching to reduce database writes - only flushes to the custom table - * every 5 minutes instead of on every request. - * * @return void */ public function update_tracked_options() { @@ -155,66 +152,15 @@ public function update_tracked_options() { return; } - // Handle reset: clear batch and custom table. + // Handle reset. if ( $this->should_reset ) { - \delete_transient( 'option_optimizer_batch' ); Database::clear_tracked_options(); return; } - // Get the batch data. - $batch_data = $this->get_batch_data(); - - // Add current request's options to the batch. - foreach ( $this->accessed_options as $option_name => $count ) { - if ( ! isset( $batch_data['options'][ $option_name ] ) ) { - $batch_data['options'][ $option_name ] = 0; - } - $batch_data['options'][ $option_name ] += $count; - } - - // Check if it's time to flush the batch. - $should_flush = ( \time() - $batch_data['last_flush'] ) >= $this->get_flush_interval(); - - // Flush batch to custom table every 5 minutes. - if ( ! empty( $batch_data['options'] ) && $should_flush ) { - Database::batch_insert( $batch_data['options'] ); - - // Reset the batch data. - $batch_data = [ - 'options' => [], - 'last_flush' => \time(), - ]; + // Write accessed options directly to the custom table. + if ( ! empty( $this->accessed_options ) ) { + Database::batch_insert( $this->accessed_options ); } - - // No expiry - batch is explicitly deleted on flush, expiry would only cause data loss. - \set_transient( 'option_optimizer_batch', $batch_data, 0 ); - } - - /** - * Get the batch data. - * - * @return array - */ - protected function get_batch_data() { - // Get existing batch (stores both data and flush timestamp in one transient). - $batch_data = \get_transient( 'option_optimizer_batch' ); - if ( ! \is_array( $batch_data ) || ! isset( $batch_data['options'], $batch_data['last_flush'] ) ) { - $batch_data = [ - 'options' => [], - 'last_flush' => \time(), - ]; - } - - return $batch_data; - } - - /** - * Get the flush interval. - * - * @return int - */ - protected function get_flush_interval() { - return (int) \apply_filters( 'aaa_option_optimizer_flush_interval', 5 * MINUTE_IN_SECONDS ); } } From 90ea8bcf188620ab1c1ec7dfd6f1c99eeb0fef7a Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 12:56:26 +0100 Subject: [PATCH 39/46] fix docblock and phpstan error --- src/class-plugin.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/class-plugin.php b/src/class-plugin.php index 8961968..0caf091 100644 --- a/src/class-plugin.php +++ b/src/class-plugin.php @@ -19,9 +19,9 @@ class Plugin { public static $instance; /** - * Holds the names of the options accessed during the request. + * Holds the options accessed during the request with their access counts. * - * @var string[] + * @var array */ protected $accessed_options = []; From 3e06c2fa0a44b6ca4fe4b197e11f50e259a6350c Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 14:04:16 +0100 Subject: [PATCH 40/46] prevent race conditions / sqlite lock errors --- aaa-option-optimizer.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index e2b59fc..c1153f0 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -84,6 +84,11 @@ function aaa_option_optimizer_deactivation() { * @return void */ function aaa_option_optimizer_maybe_upgrade() { + // Only run on admin pages, not on AJAX or REST requests to avoid race conditions. + if ( ! is_admin() || wp_doing_ajax() || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) { + return; + } + // Check if table exists, create if not. if ( ! Progress_Planner\OptionOptimizer\Database::table_exists() ) { Progress_Planner\OptionOptimizer\Database::create_table(); From c8e4b9d0979ea0cda8a76e8872685523da2a727d Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 14:33:03 +0100 Subject: [PATCH 41/46] put back, for backwards compat --- aaa-option-optimizer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index c1153f0..6072705 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -58,6 +58,7 @@ function aaa_option_optimizer_activation() { 'starting_point_kb' => ( $result->autoload_size / 1024 ), 'starting_point_num' => $result->count, 'starting_point_date' => current_time( 'mysql' ), + 'used_options' => [], // For backward compatibility. 'settings' => [ 'option_tracking' => 'pre_option', ], From ae2daaed7299dd7a9325b198dfeba4ad7bf20264 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 14:33:36 +0100 Subject: [PATCH 42/46] prevent triggering migration in parallel --- src/class-database.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/class-database.php b/src/class-database.php index 7a865bd..5a8cab6 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -92,6 +92,12 @@ public static function maybe_migrate() { return; } + // Prevent concurrent migrations. + if ( \get_transient( 'aaa_option_optimizer_migrating' ) ) { + return; + } + \set_transient( 'aaa_option_optimizer_migrating', true, 60 ); + // Ensure table exists. if ( ! self::table_exists() ) { self::create_table(); @@ -104,6 +110,8 @@ public static function maybe_migrate() { $option_data['used_options'] = []; \update_option( 'option_optimizer', $option_data, false ); + + \delete_transient( 'aaa_option_optimizer_migrating' ); } /** From 491bf068d4c3fd7764789eb369933f3fab0784c3 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 15:05:19 +0100 Subject: [PATCH 43/46] add ajax migration --- aaa-option-optimizer.php | 6 +-- js/admin-script.js | 70 +++++++++++++++++++++++++++++++ src/class-admin-page.php | 41 ++++++++++++++++-- src/class-database.php | 89 +++++++++++++++++++++++++++++++++------- src/class-rest.php | 22 ++++++++++ 5 files changed, 207 insertions(+), 21 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index 6072705..a4ce593 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -79,8 +79,9 @@ function aaa_option_optimizer_deactivation() { } /** - * Ensure database table exists and migrate data if needed. + * Ensure database table exists. * Runs on plugins_loaded to handle existing installs that don't trigger activation. + * Migration is handled via AJAX on the plugin admin page. * * @return void */ @@ -94,9 +95,6 @@ function aaa_option_optimizer_maybe_upgrade() { if ( ! Progress_Planner\OptionOptimizer\Database::table_exists() ) { Progress_Planner\OptionOptimizer\Database::create_table(); } - - // Migrate existing data if present. - Progress_Planner\OptionOptimizer\Database::maybe_migrate(); } add_action( 'plugins_loaded', 'aaa_option_optimizer_maybe_upgrade' ); diff --git a/js/admin-script.js b/js/admin-script.js index 45cfd25..3531a73 100644 --- a/js/admin-script.js +++ b/js/admin-script.js @@ -631,4 +631,74 @@ jQuery( document ).ready( function () { initializeDataTable( selector ); } } ); + + // Migration functionality. + jQuery( '#aaa-start-migration' ).on( 'click', function ( e ) { + e.preventDefault(); + const button = jQuery( this ); + const progressContainer = jQuery( '#aaa-migration-progress' ); + const progressBar = jQuery( '#aaa-migration-progress-bar' ); + const statusText = jQuery( '#aaa-migration-status' ); + const total = aaaOptionOptimizer.migration.total; + + button.prop( 'disabled', true ); + progressContainer.show(); + statusText.text( aaaOptionOptimizer.i18n.migrating ); + + /** + * Performs a single migration chunk via AJAX. + */ + function migrateChunk() { + jQuery.ajax( { + url: + aaaOptionOptimizer.root + + 'aaa-option-optimizer/v1/migrate', + method: 'POST', + beforeSend: ( xhr ) => + xhr.setRequestHeader( + 'X-WP-Nonce', + aaaOptionOptimizer.nonce + ), + success( response ) { + if ( ! response.success ) { + statusText.text( + response.message || + aaaOptionOptimizer.i18n.migrationError + ); + button.prop( 'disabled', false ); + return; + } + + const migrated = total - response.remaining; + const percent = Math.round( ( migrated / total ) * 100 ); + + progressBar.css( 'width', percent + '%' ); + statusText.text( + aaaOptionOptimizer.i18n.migratedOf + .replace( '%1$d', migrated ) + .replace( '%2$d', total ) + ); + + if ( response.remaining > 0 ) { + // Continue with next chunk. + migrateChunk(); + } else { + // Migration complete. + statusText.text( + aaaOptionOptimizer.i18n.migrationComplete + ); + setTimeout( function () { + window.location.reload(); + }, 1000 ); + } + }, + error() { + statusText.text( aaaOptionOptimizer.i18n.migrationError ); + button.prop( 'disabled', false ); + }, + } ); + } + + migrateChunk(); + } ); } ); diff --git a/src/class-admin-page.php b/src/class-admin-page.php index 05833c3..7b7a6a7 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -189,9 +189,10 @@ public function enqueue_scripts( $hook ) { 'aaa-option-optimizer-admin-js', 'aaaOptionOptimizer', [ - 'root' => \esc_url_raw( \rest_url() ), - 'nonce' => \wp_create_nonce( 'wp_rest' ), - 'i18n' => [ + 'root' => \esc_url_raw( \rest_url() ), + 'nonce' => \wp_create_nonce( 'wp_rest' ), + 'migration' => Database::get_migration_status(), + 'i18n' => [ 'filterBySource' => \esc_html__( 'Filter by source', 'aaa-option-optimizer' ), 'showValue' => \esc_html__( 'Show', 'aaa-option-optimizer' ), 'addAutoload' => \esc_html__( 'Add autoload', 'aaa-option-optimizer' ), @@ -207,6 +208,11 @@ public function enqueue_scripts( $hook ) { 'apply' => \esc_html__( 'Apply', 'aaa-option-optimizer' ), 'search' => \esc_html__( 'Search:', 'aaa-option-optimizer' ), + 'migrating' => \esc_html__( 'Migrating...', 'aaa-option-optimizer' ), + 'migrationComplete' => \esc_html__( 'Migration complete! Reloading page...', 'aaa-option-optimizer' ), + 'migrationError' => \esc_html__( 'Migration error. Please try again.', 'aaa-option-optimizer' ), + /* translators: %1$d: number of migrated options, %2$d: total number of options */ + 'migratedOf' => \esc_html__( 'Migrated %1$d of %2$d options', 'aaa-option-optimizer' ), 'entries' => [ '_' => \esc_html__( 'entries', 'aaa-option-optimizer' ), '1' => \esc_html__( 'entry', 'aaa-option-optimizer' ), @@ -260,10 +266,39 @@ public function render_admin_page_ajax() { $wpdb->prepare( "SELECT count(*) AS count, SUM( LENGTH( option_value ) ) as autoload_size FROM {$wpdb->options} WHERE autoload IN ( $placeholders )", $autoload_values ) ); // phpcs:enable WordPress.DB + + // Check if migration is needed. + $migration_status = Database::get_migration_status(); ?>

+ +
+

+
+ +

+ +

+ +

+
+ +

diff --git a/src/class-database.php b/src/class-database.php index 5a8cab6..16c5793 100644 --- a/src/class-database.php +++ b/src/class-database.php @@ -80,38 +80,99 @@ public static function table_exists() { } /** - * Migrate data from the old option format to the custom table. + * Number of options to migrate per request. * - * @return void + * @var int */ - public static function maybe_migrate() { + const MIGRATION_CHUNK_SIZE = 1000; + + /** + * Get migration status. + * + * @return array{needs_migration: bool, total: int, remaining: int} + */ + public static function get_migration_status() { $option_data = \get_option( 'option_optimizer' ); - // No data or already migrated (no used_options key). if ( ! \is_array( $option_data ) || empty( $option_data['used_options'] ) ) { - return; + return [ + 'needs_migration' => false, + 'total' => 0, + 'remaining' => 0, + ]; } - // Prevent concurrent migrations. - if ( \get_transient( 'aaa_option_optimizer_migrating' ) ) { - return; + $remaining = \count( $option_data['used_options'] ); + + // Get total from transient or set it on first check. + $total = \get_transient( 'aaa_option_optimizer_migration_total' ); + if ( false === $total ) { + $total = $remaining; + \set_transient( 'aaa_option_optimizer_migration_total', $total, HOUR_IN_SECONDS ); + } + + return [ + 'needs_migration' => true, + 'total' => (int) $total, + 'remaining' => $remaining, + ]; + } + + /** + * Migrate a chunk of data from the old option format to the custom table. + * + * Processes in chunks to avoid timeouts on slow hosts with large datasets. + * + * @return array{success: bool, remaining: int, total: int} + */ + public static function migrate_chunk() { + $option_data = \get_option( 'option_optimizer' ); + + // No data or already migrated. + if ( ! \is_array( $option_data ) || empty( $option_data['used_options'] ) ) { + \delete_transient( 'aaa_option_optimizer_migration_total' ); + return [ + 'success' => true, + 'remaining' => 0, + 'total' => 0, + ]; } - \set_transient( 'aaa_option_optimizer_migrating', true, 60 ); // Ensure table exists. if ( ! self::table_exists() ) { self::create_table(); } - // Batch insert old data to custom table. - self::batch_insert( $option_data['used_options'] ); + // Get total for progress tracking. + $total = \get_transient( 'aaa_option_optimizer_migration_total' ); + if ( false === $total ) { + $total = \count( $option_data['used_options'] ); + \set_transient( 'aaa_option_optimizer_migration_total', $total, HOUR_IN_SECONDS ); + } + + // Take a chunk of options to migrate. + $chunk = \array_slice( $option_data['used_options'], 0, self::MIGRATION_CHUNK_SIZE, true ); + + // Batch insert chunk to custom table. + self::batch_insert( $chunk ); - // Set used_options to an empty array, so we avoid php fatal error in case user decides to downgrade the plugin. - $option_data['used_options'] = []; + // Remove migrated options from the array. + $option_data['used_options'] = \array_slice( $option_data['used_options'], self::MIGRATION_CHUNK_SIZE, null, true ); \update_option( 'option_optimizer', $option_data, false ); - \delete_transient( 'aaa_option_optimizer_migrating' ); + $remaining = \count( $option_data['used_options'] ); + + // Clean up total transient when done. + if ( 0 === $remaining ) { + \delete_transient( 'aaa_option_optimizer_migration_total' ); + } + + return [ + 'success' => true, + 'remaining' => $remaining, + 'total' => (int) $total, + ]; } /** diff --git a/src/class-rest.php b/src/class-rest.php index 36c39ba..472eea4 100644 --- a/src/class-rest.php +++ b/src/class-rest.php @@ -181,6 +181,18 @@ public function register_rest_routes() { }, ] ); + + \register_rest_route( + 'aaa-option-optimizer/v1', + '/migrate', + [ + 'methods' => 'POST', + 'callback' => [ $this, 'migrate_chunk' ], + 'permission_callback' => function () { + return current_user_can( 'manage_options' ); + }, + ] + ); } /** @@ -193,6 +205,16 @@ public function reset_stats() { return new \WP_REST_Response( [ 'success' => true ], 200 ); } + /** + * Migrate a chunk of data from old format to custom table. + * + * @return \WP_REST_Response + */ + public function migrate_chunk() { + $result = Database::migrate_chunk(); + return new \WP_REST_Response( $result, 200 ); + } + /** * Update autoload status of an option. * From 75ec11daf16dee7eac942d34e7557e697c1235a3 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 22 Dec 2025 15:33:21 +0100 Subject: [PATCH 44/46] phpstan fixes --- aaa-option-optimizer.php | 3 --- src/class-admin-page.php | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index a4ce593..057afeb 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -37,9 +37,6 @@ function aaa_option_optimizer_activation() { // Create the custom table. Progress_Planner\OptionOptimizer\Database::create_table(); - // Migrate existing data if present. - Progress_Planner\OptionOptimizer\Database::maybe_migrate(); - $autoload_values = \wp_autoload_values_to_autoload(); $placeholders = implode( ',', array_fill( 0, count( $autoload_values ), '%s' ) ); diff --git a/src/class-admin-page.php b/src/class-admin-page.php index 7b7a6a7..e45a243 100644 --- a/src/class-admin-page.php +++ b/src/class-admin-page.php @@ -281,7 +281,7 @@ public function render_admin_page_ajax() { printf( /* translators: %d: number of options to migrate */ \esc_html__( 'We need to migrate %d tracked options to the new database format.', 'aaa-option-optimizer' ), - \esc_html( $migration_status['remaining'] ) + (int) $migration_status['remaining'] ); ?>

From faae7d0b713105c9fb0bc9589b7d54f0fae0683b Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Mon, 2 Mar 2026 16:32:09 +0100 Subject: [PATCH 45/46] bump version & readme.txt --- aaa-option-optimizer.php | 2 +- readme.txt | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/aaa-option-optimizer.php b/aaa-option-optimizer.php index 057afeb..75866c9 100644 --- a/aaa-option-optimizer.php +++ b/aaa-option-optimizer.php @@ -7,7 +7,7 @@ * Plugin Name: AAA Option Optimizer * Plugin URI: https://progressplanner.com/plugins/aaa-option-optimizer/ * Description: Tracks autoloaded options usage and allows the user to optimize them. - * Version: 1.5.1 + * Version: 1.6.0 * License: GPL-3.0+ * Author: Team Prospress Planner * Author URI: https://prospressplanner.com/ diff --git a/readme.txt b/readme.txt index da538c8..9680811 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: options, database, cleanup Requires at least: 6.7 Tested up to: 6.9 Requires PHP: 7.4 -Stable tag: 1.5.1 +Stable tag: 1.6.0 License: GPL3+ License URI: https://www.gnu.org/licenses/gpl-3.0.en.html @@ -54,9 +54,10 @@ Please do a pull request via GitHub on [this file](https://github.com/ProgressPl == Changelog == -= 1.5.2 = += 1.6.0 * Replace using 'all' filter for monitoring option usage with 'pre_option' filter for better performance. +* Migrate tracked options data from a single wp_option to a custom database table for improved performance and reliability. = 1.5.1 = From 381997d0c207ebcf05e2d7c6905a3ae985132c41 Mon Sep 17 00:00:00 2001 From: Filip Ilic Date: Tue, 3 Mar 2026 10:35:00 +0100 Subject: [PATCH 46/46] WP 7.0 compat --- css/style.css | 9 ++++++++- readme.txt | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/css/style.css b/css/style.css index 92fb6e1..21e90b6 100644 --- a/css/style.css +++ b/css/style.css @@ -37,7 +37,6 @@ .aaa_option_table .actions .button span.dashicons, .aaa_option_table .button.dashicon span.dashicons { padding: 0; margin: 0 3px 0 0; - vertical-align: middle; } .aaa_option_table td span.num { font-family: monospace; @@ -153,4 +152,12 @@ div.dt-container .dt-input { display: flex; flex-direction: column; gap: 10px; +} + +/* Version 6.9 compatibility */ +.branch-6-9 { + .aaa_option_table .actions .button span.dashicons, + .aaa_option_table .button.dashicon span.dashicons { + vertical-align: middle; + } } \ No newline at end of file diff --git a/readme.txt b/readme.txt index 9680811..d434e3a 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: joostdevalk, aristath, filipi Tags: options, database, cleanup Requires at least: 6.7 -Tested up to: 6.9 +Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 1.6.0 License: GPL3+