From 6390e9ac707878ee595cb27c7abaa6a7c0f90787 Mon Sep 17 00:00:00 2001 From: Krystie Date: Mon, 18 May 2026 15:27:59 -0700 Subject: [PATCH] Add WordPress admin settings page: Settings > Beep for Giphy API key --- includes/class-beep.php | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/includes/class-beep.php b/includes/class-beep.php index 0ec8fd5..61fef0e 100755 --- a/includes/class-beep.php +++ b/includes/class-beep.php @@ -18,6 +18,51 @@ class Beep_Plugin { if (!get_option('beep_giphy_key')) { update_option('beep_giphy_key', 'xuxYxuIvzPqw5tPB4laa7sQO8dFtSlNS'); } + + // Admin settings + add_action('admin_menu', [__CLASS__, 'add_admin_menu']); + add_action('admin_init', [__CLASS__, 'register_settings']); + } + + public static function add_admin_menu() { + add_options_page( + 'Beep Settings', + 'Beep', + 'manage_options', + 'beep-settings', + [__CLASS__, 'render_settings_page'] + ); + } + + public static function register_settings() { + register_setting('beep_settings_group', 'beep_giphy_key', [ + 'sanitize_callback' => 'sanitize_text_field', + ]); + add_settings_section('beep_main_section', 'API Configuration', null, 'beep-settings'); + add_settings_field( + 'beep_giphy_key', + 'Giphy API Key', + [__CLASS__, 'giphy_key_field'], + 'beep-settings', + 'beep_main_section', + ['label_for' => 'beep_giphy_key'] + ); + } + + public static function giphy_key_field() { + $key = get_option('beep_giphy_key', ''); + echo ''; + echo '

Get a free API key at developers.giphy.com

'; + } + + public static function render_settings_page() { + if (!current_user_can('manage_options')) return; + echo '

Beep Settings

'; + echo '
'; + settings_fields('beep_settings_group'); + do_settings_sections('beep-settings'); + submit_button(); + echo '
'; } public static function activate() {