From 91830b4f45f4d57c144eed4c2589883089777860 Mon Sep 17 00:00:00 2001 From: Sudhir Yadav Date: Fri, 3 Feb 2023 11:27:26 +0530 Subject: [PATCH 1/5] Register script settings as an array --- includes/settings-page.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/includes/settings-page.php b/includes/settings-page.php index c99a72b..d3a7275 100644 --- a/includes/settings-page.php +++ b/includes/settings-page.php @@ -13,14 +13,20 @@ function rt_settings_init() { // Register new setting options. - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_exclude_paths' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_exclude_handles' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_style_dequeue_non_logged_handles' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_style_async_handles' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_style_async_handles_onevent' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_load_amp_boilerplate_style' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_skip_css_concatination_all' ); - register_setting( 'rt-scripts-optimizer-settings', 'rt_scripts_optimizer_skip_css_concatination_handles' ); + $script_settings = [ + 'rt_scripts_optimizer_exclude_paths', + 'rt_scripts_optimizer_exclude_handles', + 'rt_scripts_optimizer_style_dequeue_non_logged_handles', + 'rt_scripts_optimizer_style_async_handles', + 'rt_scripts_optimizer_style_async_handles_onevent', + 'rt_scripts_optimizer_load_amp_boilerplate_style', + 'rt_scripts_optimizer_skip_css_concatination_all', + 'rt_scripts_optimizer_skip_css_concatination_handles' + ]; + + foreach ( $script_settings as $setting ) { + register_setting( 'rt-scripts-optimizer-settings', $setting ); + } // Register a new section. add_settings_section( From 43f4cda47ad3636c0348a8f0bb29e3d79aa9034f Mon Sep 17 00:00:00 2001 From: Sudhir Yadav Date: Fri, 3 Feb 2023 11:28:29 +0530 Subject: [PATCH 2/5] Ignore code editor files --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a32768a..8bb7c01 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ node_modules/ *.log *.sql *.sqlite + +# ignore code editor files +.idea From 9f56d9c2ddc8500775fc25d1b7e629e87df45cc8 Mon Sep 17 00:00:00 2001 From: Sudhir Yadav Date: Fri, 3 Feb 2023 13:05:12 +0530 Subject: [PATCH 3/5] Refactor code to add setting fields from an array --- includes/settings-page.php | 158 ++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 81 deletions(-) diff --git a/includes/settings-page.php b/includes/settings-page.php index d3a7275..e59d7a1 100644 --- a/includes/settings-page.php +++ b/includes/settings-page.php @@ -14,18 +14,85 @@ function rt_settings_init() { // Register new setting options. $script_settings = [ - 'rt_scripts_optimizer_exclude_paths', - 'rt_scripts_optimizer_exclude_handles', - 'rt_scripts_optimizer_style_dequeue_non_logged_handles', - 'rt_scripts_optimizer_style_async_handles', - 'rt_scripts_optimizer_style_async_handles_onevent', - 'rt_scripts_optimizer_load_amp_boilerplate_style', - 'rt_scripts_optimizer_skip_css_concatination_all', - 'rt_scripts_optimizer_skip_css_concatination_handles' + 'rt_scripts_optimizer_exclude_paths' => [ + 'id' => 'rt_scripts_optimizer_path_field', + 'title' => __( 'Load js normally by adding script path here', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_paths_field_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_exclude_handles' => [ + 'id' => 'rt_scripts_optimizer_handle_field', + 'title' => __( 'Load js normally by adding script handles', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_handles_field_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_style_dequeue_non_logged_handles' => [ + 'id' => 'rt_scripts_optimizer_style_dequeue_non_logged_handles', + 'title' => __( 'CSS handles of the stylesheets which should not be loaded if user not logged in', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_style_dequeue_non_logged_handles_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_style_async_handles' => [ + 'id' => 'rt_scripts_optimizer_style_async_handles', + 'title' => __( 'CSS handles of the stylesheets which should be asynchronously loaded', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_style_async_handles_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_style_async_handles_onevent' => [ + 'id' => 'rt_scripts_optimizer_style_async_handles_onevent', + 'title' => __( 'CSS handles of the stylesheets which should be asynchronously loaded on any window event', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_style_async_handles_onevent_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_load_amp_boilerplate_style' => [ + 'id' => 'rt_scripts_optimizer_load_amp_boilerplate_style', + 'title' => __( 'Load AMP boilerplate CSS', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_load_amp_boilerplate_style_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_skip_css_concatination_all' => [ + 'id' => 'rt_scripts_optimizer_skip_css_concatination_all', + 'title' => __( 'Skip all CSS concatination', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_skip_css_concatination_all_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ], + 'rt_scripts_optimizer_skip_css_concatination_handles' => [ + 'id' => 'rt_scripts_optimizer_skip_css_concatination_handles', + 'title' => __( 'Skip CSS concatination for these handles', 'RT_Script_Optimizer' ), + 'callback' => 'rt_scripts_optimizer_skip_css_concatination_handles_callback', + 'page' => 'rt-scripts-optimizer-settings', + 'section' => 'rt_scripts_optimizer_settings_section' + ] ]; - foreach ( $script_settings as $setting ) { - register_setting( 'rt-scripts-optimizer-settings', $setting ); + /** + * Add fields from settings array to following core functions. + * + * add_settings_field( $id, $title, $callback, $page, $section ) + * - https://developer.wordpress.org/reference/functions/add_settings_field/ + * + * register_setting( $option_group, $option_name ) + * - https://developer.wordpress.org/reference/functions/register_setting/ + * + */ + foreach ( $script_settings as $option_name => $settings ) { + + add_settings_field( + $settings[ 'id' ], + $settings[ 'title' ], + $settings[ 'callback' ], + $settings[ 'page' ], + $settings[ 'page' ] + ); + + register_setting( 'rt-scripts-optimizer-settings', $option_name ); } // Register a new section. @@ -36,77 +103,6 @@ function rt_settings_init() { 'rt-scripts-optimizer-settings' // Page. ); - // Register a new field to fetch paths of scripts to exclude. - add_settings_field( - 'rt_scripts_optimizer_path_field', // As of WP 4.6 this value is used only internally. - __( 'Load js normally by adding script path here', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_paths_field_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch handles of scripts to exclude. - add_settings_field( - 'rt_scripts_optimizer_handle_field', // As of WP 4.6 this value is used only internally. - __( 'Load js normally by adding script handles', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_handles_field_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch handles of styles to be dequeued for non-logged in users. - add_settings_field( - 'rt_scripts_optimizer_style_dequeue_non_logged_handles', // As of WP 4.6 this value is used only internally. - __( 'CSS handles of the stylesheets which should not be loaded if user not logged in', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_style_dequeue_non_logged_handles_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch handles of styles to be loaded async. - add_settings_field( - 'rt_scripts_optimizer_style_async_handles', // As of WP 4.6 this value is used only internally. - __( 'CSS handles of the stylesheets which should be asynchronously loaded', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_style_async_handles_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch handles of styles to be loaded on any window event. - add_settings_field( - 'rt_scripts_optimizer_style_async_handles_onevent', // As of WP 4.6 this value is used only internally. - __( 'CSS handles of the stylesheets which should be asynchronously loaded on any window event', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_style_async_handles_onevent_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch option whether to load amp-boilerplate style. - add_settings_field( - 'rt_scripts_optimizer_load_amp_boilerplate_style', // As of WP 4.6 this value is used only internally. - __( 'Load AMP boilerplate CSS', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_load_amp_boilerplate_style_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch option whether to skip all CSS concatination. - add_settings_field( - 'rt_scripts_optimizer_skip_css_concatination_all', // As of WP 4.6 this value is used only internally. - __( 'Skip all CSS concatination', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_skip_css_concatination_all_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); - - // Register a new field to fetch handles of stylesheets which are not to be concated. - add_settings_field( - 'rt_scripts_optimizer_skip_css_concatination_handles', // As of WP 4.6 this value is used only internally. - __( 'Skip CSS concatination for these handles', 'RT_Script_Optimizer' ), // Title. - 'rt_scripts_optimizer_skip_css_concatination_handles_callback', // Callback Function. - 'rt-scripts-optimizer-settings', // Page. - 'rt_scripts_optimizer_settings_section' // Section. - ); } /** From 140b3951d0c0d2ec3821e0c6f64463d9c071309a Mon Sep 17 00:00:00 2001 From: Sudhir Yadav Date: Fri, 3 Feb 2023 13:06:25 +0530 Subject: [PATCH 4/5] Fix whitespace issue --- includes/settings-page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/settings-page.php b/includes/settings-page.php index e59d7a1..e5aecc7 100644 --- a/includes/settings-page.php +++ b/includes/settings-page.php @@ -98,7 +98,7 @@ function rt_settings_init() { // Register a new section. add_settings_section( 'rt_scripts_optimizer_settings_section', // ID. - __( 'RT Scripts Optimizer Settings', 'RT_Script_Optimizer' ), // Title. + __( 'RT Scripts Optimizer Settings', 'RT_Script_Optimizer' ), // Title. 'rt_scripts_optimizer_settings_callback', // Callback Function. 'rt-scripts-optimizer-settings' // Page. ); From 95d7c5130a20a61fae453e8f8dac3eb11023ba13 Mon Sep 17 00:00:00 2001 From: Sudhir Yadav Date: Fri, 3 Feb 2023 15:08:05 +0530 Subject: [PATCH 5/5] Fix sections key for the add_settings_field function --- includes/settings-page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/settings-page.php b/includes/settings-page.php index e5aecc7..d633fbc 100644 --- a/includes/settings-page.php +++ b/includes/settings-page.php @@ -89,7 +89,7 @@ function rt_settings_init() { $settings[ 'title' ], $settings[ 'callback' ], $settings[ 'page' ], - $settings[ 'page' ] + $settings[ 'section' ] ); register_setting( 'rt-scripts-optimizer-settings', $option_name );