OpenAI Settings', [$this, 'openai_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_openai_api_key', __('OpenAI API Key', 'ai-image'), [$this, 'openai_content_generator_callback'], 'bdthemes-ai-image-options', 'bdthemes_openai_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_openai_api_key', ['sanitize_callback' => 'sanitize_text_field']); add_settings_section('bdthemes_gemini_section', 'Google Gemini Settings', [$this, 'gemini_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_gemini_api_key', __('Gemini API Key', 'ai-image'), [$this, 'gemini_api_key_callback'], 'bdthemes-ai-image-options', 'bdthemes_gemini_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_gemini_api_key', ['sanitize_callback' => 'sanitize_text_field']); add_settings_section('bdthemes_unsplash_section', 'Unsplash Settings', [$this, 'unsplash_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_unsplash_access_key', __('Unsplash Access Key (Optional)', 'ai-image'), [$this, 'unsplash_api_key_callback'], 'bdthemes-ai-image-options', 'bdthemes_unsplash_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_unsplash_access_key', ['sanitize_callback' => function( $v ) { return sanitize_text_field( is_string( $v ) ? trim( $v ) : $v ); }]); add_settings_section('bdthemes_giphy_section', 'Giphy Settings', [$this, 'giphy_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_giphy_api_key', __('Giphy API Key (Optional)', 'ai-image'), [$this, 'giphy_api_key_callback'], 'bdthemes-ai-image-options', 'bdthemes_giphy_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_giphy_api_key', ['sanitize_callback' => function( $v ) { return sanitize_text_field( is_string( $v ) ? trim( $v ) : $v ); }]); add_settings_section('bdthemes_pexels_section', 'Pexels Settings', [$this, 'pexels_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_pexels_api_key', __('Pexels API Key (Optional)', 'ai-image'), [$this, 'pexels_api_key_callback'], 'bdthemes-ai-image-options', 'bdthemes_pexels_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_pexels_api_key', ['sanitize_callback' => function( $v ) { return sanitize_text_field( is_string( $v ) ? trim( $v ) : $v ); }]); add_settings_section('bdthemes_pixabay_section', 'Pixabay Settings', [$this, 'pixabay_settings_section'], 'bdthemes-ai-image-options'); add_settings_field('bdthemes_pixabay_api_key', __('Pixabay API Key (Optional)', 'ai-image'), [$this, 'pixabay_api_key_callback'], 'bdthemes-ai-image-options', 'bdthemes_pixabay_section'); register_setting('bdthemes-ai-image-options', 'bdthemes_pixabay_api_key', ['sanitize_callback' => function( $v ) { return sanitize_text_field( is_string( $v ) ? trim( $v ) : $v ); }]); $provider_ids = array( 'pexels', 'pixabay', 'unsplash', 'openverse', 'wikimedia', 'giphy', 'openai', 'gemini' ); $sanitize_provider = function( $v ) { if ( $v === true || $v === '1' || $v === 1 ) return '1'; return '0'; }; foreach ( $provider_ids as $id ) { register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_provider_' . $id, array( 'sanitize_callback' => $sanitize_provider, ) ); } register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_max_upload_width', array( 'sanitize_callback' => 'absint' ) ); register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_max_upload_height', array( 'sanitize_callback' => 'absint' ) ); register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_default_provider', array( 'sanitize_callback' => 'sanitize_text_field' ) ); register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_attribution', array( 'sanitize_callback' => $sanitize_provider ) ); register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_hide_media_modal_tab', array( 'sanitize_callback' => $sanitize_provider ) ); register_setting( 'bdthemes-ai-image-options', 'bdthemes_ai_image_custom_sizes', array( 'sanitize_callback' => array( $this, 'sanitize_custom_sizes' ) ) ); } public function sanitize_custom_sizes( $value ) { if ( ! is_array( $value ) ) { return array(); } $sanitized = array(); foreach ( $value as $name => $size ) { if ( ! is_array( $size ) || empty( $size['width'] ) || empty( $size['height'] ) ) { continue; } $clean_name = sanitize_title( $name ); if ( empty( $clean_name ) ) continue; $sanitized[ $clean_name ] = array( 'width' => absint( $size['width'] ), 'height' => absint( $size['height'] ), 'crop' => ! empty( $size['crop'] ), ); } return $sanitized; } public function openai_settings_section() { ?>
here');
?>
how to use OpenAI API');
?>
%s %s
', esc_html__('Unsplash works with a default API key. You can optionally provide your own Access Key from', 'ai-image'), '' . esc_html__('Unsplash Developers', 'ai-image') . '' ); } public function unsplash_api_key_callback() { $api_key = get_option('bdthemes_unsplash_access_key'); printf( '%s
', isset($api_key) ? esc_attr($api_key) : '', esc_html__('Leave empty to use the default API key.', 'ai-image') ); } public function giphy_settings_section() { printf( '%s %s
', esc_html__('Giphy works with a default API key. You can optionally provide your own API key from', 'ai-image'), '' . esc_html__('GIPHY Developers', 'ai-image') . '' ); } public function giphy_api_key_callback() { $api_key = get_option('bdthemes_giphy_api_key'); printf( '%s
', isset($api_key) ? esc_attr($api_key) : '', esc_html__('Leave empty to use the default API key.', 'ai-image') ); } public function gemini_settings_section() { printf( '%s %s.
', esc_html__('Get your free Google Gemini API key from', 'ai-image'), esc_html__('Google AI Studio', 'ai-image') ); } public function gemini_api_key_callback() { $api_key = get_option('bdthemes_gemini_api_key'); printf( '', isset($api_key) ? esc_attr($api_key) : '' ); } public function pexels_settings_section() { printf( '%s %s
', esc_html__('Pexels works with a default API key. You can optionally provide your own API key from', 'ai-image'), '' . esc_html__('Pexels API', 'ai-image') . '' ); } public function pexels_api_key_callback() { $api_key = get_option('bdthemes_pexels_api_key'); printf( '%s
', isset($api_key) ? esc_attr($api_key) : '', esc_html__('Leave empty to use the default API key.', 'ai-image') ); } public function pixabay_settings_section() { printf( '%s %s
', esc_html__('Pixabay works with a default API key. You can optionally provide your own API key from', 'ai-image'), '' . esc_html__('Pixabay API', 'ai-image') . '' ); } public function pixabay_api_key_callback() { $api_key = get_option('bdthemes_pixabay_api_key'); printf( '%s
', isset($api_key) ? esc_attr($api_key) : '', esc_html__('Leave empty to use the default API key.', 'ai-image') ); } /** * Plugin action links * @access public * @return array */ public function plugin_action_links( $plugin_meta ) { $row_meta = [ 'settings' => '' . __('Settings', 'ai-image') . '', ]; $plugin_meta = array_merge($plugin_meta, $row_meta); return $plugin_meta; } } new BDTHEMES_OPENAI_ADMIN_SETTINGS_PAGE();