'array', 'sanitize_callback' => array( $this, 'sanitize' ), 'default' => array(), ) ); add_settings_section( 'mra_general', __( 'General', 'robotstxt-mediaaudit' ), '__return_false', 'robotstxt-mediaaudit-settings' ); add_settings_field( 'delete_on_uninstall', __( 'Delete data on uninstall', 'robotstxt-mediaaudit' ), array( $this, 'field_delete_on_uninstall' ), 'robotstxt-mediaaudit-settings', 'mra_general' ); add_settings_section( 'mra_api_credentials', __( 'API Credentials', 'robotstxt-mediaaudit' ), '__return_false', 'robotstxt-mediaaudit-settings' ); add_settings_field( 'google_vision_api_key', __( 'Google Cloud Vision API Key', 'robotstxt-mediaaudit' ), array( $this, 'field_google_vision_api_key' ), 'robotstxt-mediaaudit-settings', 'mra_api_credentials' ); add_settings_field( 'tineye_api_key', __( 'TinEye API Key', 'robotstxt-mediaaudit' ), array( $this, 'field_tineye_api_key' ), 'robotstxt-mediaaudit-settings', 'mra_api_credentials' ); add_settings_field( 'picdefense_user_id', __( 'PicDefense User ID', 'robotstxt-mediaaudit' ), array( $this, 'field_picdefense_user_id' ), 'robotstxt-mediaaudit-settings', 'mra_api_credentials' ); add_settings_field( 'picdefense_api_key', __( 'PicDefense API Key', 'robotstxt-mediaaudit' ), array( $this, 'field_picdefense_api_key' ), 'robotstxt-mediaaudit-settings', 'mra_api_credentials' ); add_settings_section( 'mra_external_scanning', __( 'External Scanning', 'robotstxt-mediaaudit' ), '__return_false', 'robotstxt-mediaaudit-settings' ); add_settings_field( 'external_batch_size', __( 'Batch Size', 'robotstxt-mediaaudit' ), array( $this, 'field_external_batch_size' ), 'robotstxt-mediaaudit-settings', 'mra_external_scanning' ); add_settings_field( 'rate_limit_per_minute', __( 'Rate Limit (requests/min)', 'robotstxt-mediaaudit' ), array( $this, 'field_rate_limit_per_minute' ), 'robotstxt-mediaaudit-settings', 'mra_external_scanning' ); } /** * Sanitises the settings array on save. * * @param mixed $input Raw POST input. * * @return array */ public function sanitize( $input ): array { $output = array(); if ( ! is_array( $input ) ) { return $output; } $output['delete_on_uninstall'] = ! empty( $input['delete_on_uninstall'] ); $key_val = $input['google_vision_api_key'] ?? null; $output['google_vision_api_key'] = is_string( $key_val ) ? sanitize_text_field( $key_val ) : ''; $tineye_val = $input['tineye_api_key'] ?? null; $output['tineye_api_key'] = is_string( $tineye_val ) ? sanitize_text_field( $tineye_val ) : ''; $pd_uid_val = $input['picdefense_user_id'] ?? null; $output['picdefense_user_id'] = is_string( $pd_uid_val ) ? sanitize_text_field( $pd_uid_val ) : ''; $pd_key_val = $input['picdefense_api_key'] ?? null; $output['picdefense_api_key'] = is_string( $pd_key_val ) ? sanitize_text_field( $pd_key_val ) : ''; $batch_val = $input['external_batch_size'] ?? null; $batch = is_numeric( $batch_val ) ? (int) $batch_val : 10; $output['external_batch_size'] = max( 1, min( 100, $batch ) ); $rl_val = $input['rate_limit_per_minute'] ?? null; $rl = is_numeric( $rl_val ) ? (int) $rl_val : 10; $output['rate_limit_per_minute'] = max( 1, min( 60, $rl ) ); return $output; } /** * Renders the "Delete data on uninstall" checkbox field. * * @return void */ public function field_delete_on_uninstall(): void { $options = (array) get_option( self::OPTION_NAME, array() ); $checked = ! empty( $options['delete_on_uninstall'] ); ?>

1,001 – 5,000,000 $1.50
5,000,001+ $0.60

500 $50
5,000 $200
25,000 $600

is_google_vision_configured(); $te_ok = $this->is_tineye_configured(); $pd_ok = $this->is_picdefense_configured(); ?>

  • PicDefense