plugin = $plugin; $this->provider_manager = $provider_manager; add_action( 'admin_menu', [ $this, 'register_settings_pages' ] ); add_action( 'admin_init', [ $this, 'register_settings' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_settings_assets' ] ); add_action( 'admin_head', [ $this, 'hide_menu_links' ] ); } public function register_settings_pages() { add_options_page( __( 'Siti AI Productteksten', GROQ_AI_PRODUCT_TEXT_DOMAIN ), __( 'Siti AI', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'manage_options', 'groq-ai-product-text', [ $this, 'render_settings_page' ] ); add_submenu_page( 'options-general.php', __( 'Siti AI Modules', GROQ_AI_PRODUCT_TEXT_DOMAIN ), __( 'Siti AI Modules', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'manage_options', 'groq-ai-product-text-modules', [ $this, 'render_modules_page' ] ); add_submenu_page( 'options-general.php', __( 'Siti AI AI-logboek', GROQ_AI_PRODUCT_TEXT_DOMAIN ), __( 'Siti AI AI-logboek', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'manage_options', 'groq-ai-product-text-logs', [ $this, 'render_logs_page' ] ); add_submenu_page( 'options-general.php', __( 'Siti AI Prompt instellingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), __( 'Siti AI Prompt instellingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'manage_options', 'groq-ai-product-text-prompts', [ $this, 'render_prompt_settings_page' ] ); } public function hide_menu_links() { if ( ! current_user_can( 'manage_options' ) ) { return; } ?> plugin->get_option_key(), [ $this->plugin, 'sanitize_settings' ] ); add_settings_section( 'groq_ai_product_text_general', __( 'Algemene instellingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), '__return_false', 'groq-ai-product-text' ); add_settings_field( 'groq_ai_provider', __( 'AI-aanbieder', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_provider_field' ], 'groq-ai-product-text', 'groq_ai_product_text_general' ); add_settings_field( 'groq_ai_model', __( 'Model', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_model_field' ], 'groq-ai-product-text', 'groq_ai_product_text_general' ); foreach ( $this->provider_manager->get_providers() as $provider ) { add_settings_field( 'groq_ai_api_key_' . $provider->get_key(), sprintf( __( '%s API-sleutel', GROQ_AI_PRODUCT_TEXT_DOMAIN ), $provider->get_label() ), [ $this, 'render_provider_api_key_field' ], 'groq-ai-product-text', 'groq_ai_product_text_general', [ 'provider' => $provider, ] ); } add_settings_section( 'groq_ai_product_text_prompts', __( 'Prompt instellingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), '__return_false', 'groq-ai-product-text-prompts' ); add_settings_field( 'groq_ai_store_context', __( 'Winkelcontext', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_store_context_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_field( 'groq_ai_default_prompt', __( 'Standaard prompt', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_default_prompt_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_field( 'groq_ai_context_fields', __( 'Standaard productcontext', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_context_fields_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_field( 'groq_ai_response_format_compat', __( 'Response-format compatibiliteit', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_response_format_compat_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_field( 'groq_ai_image_context_mode', __( 'Afbeeldingen toevoegen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_image_context_mode_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_field( 'groq_ai_image_context_limit', __( 'Maximaal aantal afbeeldingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_image_context_limit_field' ], 'groq-ai-product-text-prompts', 'groq_ai_product_text_prompts' ); add_settings_section( 'groq_ai_product_text_modules_rankmath', __( 'Rank Math SEO', GROQ_AI_PRODUCT_TEXT_DOMAIN ), '__return_false', 'groq-ai-product-text-modules' ); add_settings_field( 'groq_ai_module_rankmath', __( 'Rank Math SEO', GROQ_AI_PRODUCT_TEXT_DOMAIN ), [ $this, 'render_rankmath_module_field' ], 'groq-ai-product-text-modules', 'groq_ai_product_text_modules_rankmath' ); } public function render_image_context_mode_field() { $settings = $this->plugin->get_settings(); $mode = isset( $settings['image_context_mode'] ) ? $settings['image_context_mode'] : 'url'; $options = [ 'none' => __( 'Nee, geen afbeeldingen', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'url' => __( 'Ja, voeg afbeeldings-URL’s toe aan de prompt', GROQ_AI_PRODUCT_TEXT_DOMAIN ), 'base64' => __( 'Ja, verstuur afbeeldingen als Base64 (indien ondersteund)', GROQ_AI_PRODUCT_TEXT_DOMAIN ), ]; ?>
plugin->get_settings(); $limit = $this->plugin->get_image_context_limit( $settings ); ?>
plugin->get_settings(); ?>
get_label() ) ); ?>
plugin->get_settings(); $defaults = $this->plugin->get_default_modules_settings(); $modules = isset( $settings['modules'] ) ? $settings['modules'] : $defaults; $config = isset( $modules['rankmath'] ) ? $modules['rankmath'] : ( $defaults['rankmath'] ?? [] ); $rankmath_active = $this->plugin->is_rankmath_active(); $enabled = $rankmath_active && ! empty( $config['enabled'] ); $keyword_limit = isset( $config['focus_keyword_limit'] ) ? absint( $config['focus_keyword_limit'] ) : ( $defaults['rankmath']['focus_keyword_limit'] ?? 3 ); $keyword_limit = $keyword_limit > 0 ? $keyword_limit : 3; $title_pixels = isset( $config['meta_title_pixel_limit'] ) ? absint( $config['meta_title_pixel_limit'] ) : ( $defaults['rankmath']['meta_title_pixel_limit'] ?? 580 ); $title_pixels = $title_pixels > 0 ? $title_pixels : 580; $pixel_limit = isset( $config['meta_description_pixel_limit'] ) ? absint( $config['meta_description_pixel_limit'] ) : ( $defaults['rankmath']['meta_description_pixel_limit'] ?? 920 ); $pixel_limit = $pixel_limit > 0 ? $pixel_limit : 920; $rankmath_active = $this->plugin->is_rankmath_active(); ?>
/>
/>
/>