1, 'analytics_retention' => 180, 'cache_enabled' => 1, 'load_base_css' => 1, 'lazy_images' => 1, 'uninstall_delete' => 0, ) ); echo '
'; SRPP_Admin::header( __( 'Settings', 'advanced-css3-related-posts-widget' ), __( 'Global behaviour. Everything else lives inside each display.', 'advanced-css3-related-posts-widget' ), '', array( 'icon' => 'sliders' ) ); echo '
'; wp_nonce_field( 'srpp_settings_save', 'srpp_settings_nonce' ); echo '
'; self::toggle( 'cache_enabled', $options, __( 'Cache resolved recommendations', 'advanced-css3-related-posts-widget' ), __( 'Strongly recommended. IDs are stored per post and refreshed automatically.', 'advanced-css3-related-posts-widget' ) ); self::toggle( 'load_base_css', $options, __( 'Load the plugin stylesheet', 'advanced-css3-related-posts-widget' ), __( 'Turn off only if you are styling the markup entirely in your theme.', 'advanced-css3-related-posts-widget' ) ); self::toggle( 'lazy_images', $options, __( 'Lazy-load recommendation images', 'advanced-css3-related-posts-widget' ) ); self::toggle( 'analytics_enabled', $options, __( 'Track impressions and clicks', 'advanced-css3-related-posts-widget' ), __( 'Aggregated per day. No personal data, no cookies.', 'advanced-css3-related-posts-widget' ) ); printf( '
%s
%s
', esc_html__( 'Keep statistics for', 'advanced-css3-related-posts-widget' ), esc_html__( 'Older rows are deleted daily. 0 keeps everything.', 'advanced-css3-related-posts-widget' ), (int) $options['analytics_retention'], esc_html__( 'days', 'advanced-css3-related-posts-widget' ) ); self::toggle( 'uninstall_delete', $options, __( 'Delete all plugin data on uninstall', 'advanced-css3-related-posts-widget' ), __( 'Displays, cached IDs, statistics and settings.', 'advanced-css3-related-posts-widget' ) ); echo '
'; printf( '

', esc_html__( 'Save settings', 'advanced-css3-related-posts-widget' ) ); echo '
'; } /** * Toggle row. * * @param string $key Option key. * @param array $options Options. * @param string $label Label. * @param string $help Help. */ protected static function toggle( $key, $options, $label, $help = '' ) { printf( '
%s
', esc_html( $label ), $help ? '' . esc_html( $help ) . '' : '', esc_attr( $key ), esc_attr( $key ), checked( ! empty( $options[ $key ] ), true, false ) ); } /** * Save handler. */ protected static function maybe_save() { if ( ! isset( $_POST['srpp_settings_nonce'] ) ) { return; } if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['srpp_settings_nonce'] ) ), 'srpp_settings_save' ) ) { return; } $raw = isset( $_POST['srpp_settings'] ) ? (array) wp_unslash( $_POST['srpp_settings'] ) : array(); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $clean = array( 'analytics_enabled' => ! empty( $raw['analytics_enabled'] ) ? 1 : 0, 'analytics_retention' => isset( $raw['analytics_retention'] ) ? max( 0, min( 1825, (int) $raw['analytics_retention'] ) ) : 180, 'cache_enabled' => ! empty( $raw['cache_enabled'] ) ? 1 : 0, 'load_base_css' => ! empty( $raw['load_base_css'] ) ? 1 : 0, 'lazy_images' => ! empty( $raw['lazy_images'] ) ? 1 : 0, 'uninstall_delete' => ! empty( $raw['uninstall_delete'] ) ? 1 : 0, ); update_option( 'srpp_settings', $clean ); do_action( 'srpp_settings_saved' ); wp_safe_redirect( add_query_arg( array( 'page' => 'srpp-settings', 'srpp_msg' => 'settings' ), admin_url( 'admin.php' ) ) ); exit; } }