blacklist_settings = new Blacklist_Settings( self::BLACKLIST_OPTION, 'blocklist' ); $this->whitelist_settings = new Whitelist_Settings( self::WHITELIST_OPTION, 'allowlist' ); $this->business_only_settings = new Business_Only_Settings(); $this->disposable_settings = new Disposable_Settings(); add_action( 'admin_menu', [ $this, 'add_admin_menu' ] ); add_action( 'admin_init', [ $this, 'register_settings' ] ); } public function add_admin_menu() { add_menu_page( __( 'Email Filter Settings', 'advanced-email-filter-for-elementor-forms' ), __( 'Email Filter', 'advanced-email-filter-for-elementor-forms' ), 'manage_options', 'aefe-settings', [ $this, 'render_settings_page' ], 'dashicons-email-alt' ); } public function register_settings() { // Register settings register_setting( 'aefe_filter_group', self::WHITELIST_OPTION, 'sanitize_text_field' ); register_setting( 'aefe_filter_group', self::BLACKLIST_OPTION, 'sanitize_text_field' ); register_setting( 'aefe_filter_group', self::BUSINESS_ONLY_OPTION, 'rest_sanitize_boolean' ); register_setting( 'aefe_filter_group', self::DISPOSABLE_OPTION, 'rest_sanitize_boolean' ); // Add custom sanitization add_filter( 'sanitize_option_' . self::WHITELIST_OPTION, [ $this, 'sanitize_list' ] ); add_filter( 'sanitize_option_' . self::BLACKLIST_OPTION, [ $this, 'sanitize_list' ] ); // Register sections and fields $this->whitelist_settings->register_section_and_field(); $this->blacklist_settings->register_section_and_field(); $this->business_only_settings->register_section_and_field(); $this->disposable_settings->register_section_and_field(); } public function sanitize_list( $input ) { if ( ! is_string( $input ) ) { return ''; } $entries = explode( ',', sanitize_text_field( $input ) ); $cleaned = array_unique( array_filter( array_map( [ $this, 'clean_entry' ], $entries ) ) ); return implode( ',', $cleaned ); } private function clean_entry( $entry ) { $clean_entry = trim( strtolower( $entry ) ); return ! empty( $clean_entry ) ? $clean_entry : null; } public function render_settings_page() { ?>

  • @spamdomain.com -
  • *.ru -
  • temp* -

  • @yourcompany.com -
  • admin@ -
  • *.trusted.org -