array() ); add_option('wp_gray_dates_options', $default_options); } /** * 插件停用时执行 */ public function deactivate() { // 停用时不删除数据 } /** * 插件卸载时执行 */ public static function uninstall() { // 删除所有插件数据 delete_option('wp_gray_dates_options'); } /** * 添加管理菜单 */ public function add_admin_menu() { add_options_page( '灰色日期设置', '灰色日期', 'manage_options', 'wp-gray-dates', array($this, 'render_admin_page') ); } /** * 添加设置链接 */ public function add_settings_link($links) { $settings_link = '' . __('设置', 'wp-gray-dates') . ''; array_unshift($links, $settings_link); return $links; } /** * 加载管理页面的样式和脚本 */ public function enqueue_admin_assets($hook) { if ('settings_page_wp-gray-dates' !== $hook) { return; } wp_enqueue_style('jquery-ui-datepicker'); wp_enqueue_script('jquery-ui-datepicker'); // 添加自定义脚本 wp_enqueue_script( 'wp-gray-dates-admin', plugins_url('js/admin.js', __FILE__), array('jquery', 'jquery-ui-datepicker'), '1.0.0', true ); // 添加自定义样式 wp_enqueue_style( 'wp-gray-dates-admin', plugins_url('css/admin.css', __FILE__), array(), '1.0.0' ); // 本地化脚本 wp_localize_script('wp-gray-dates-admin', 'wpGrayDates', array( 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('wp-gray-dates-nonce'), )); } /** * 渲染管理页面 */ public function render_admin_page() { // 检查用户权限 if (!current_user_can('manage_options')) { return; } // 保存设置 if (isset($_POST['wp_gray_dates_save']) && check_admin_referer('wp_gray_dates_nonce')) { $this->save_settings(); } // 获取当前设置 $options = get_option('wp_gray_dates_options', array('gray_dates' => array())); $gray_dates = $options['gray_dates']; // 包含管理页面模板 include plugin_dir_path(__FILE__) . 'templates/admin-page.php'; } /** * 保存设置 */ private function save_settings() { $options = array(); // 处理日期数据 $options['gray_dates'] = array(); if (isset($_POST['gray_dates']) && is_array($_POST['gray_dates'])) { foreach ($_POST['gray_dates'] as $date) { if (!empty($date)) { // 确保日期格式为 MM-DD $date = sanitize_text_field($date); // 验证日期格式 if (preg_match('/^\d{2}-\d{2}$/', $date)) { $options['gray_dates'][] = $date; } } } } // 更新选项 update_option('wp_gray_dates_options', $options); // 添加成功消息 add_settings_error( 'wp_gray_dates_messages', 'wp_gray_dates_message', __('设置已保存。', 'wp-gray-dates'), 'updated' ); } /** * 检查当前日期是否应该应用灰色样式 */ public function maybe_add_gray_style() { $options = get_option('wp_gray_dates_options', array('gray_dates' => array())); $gray_dates = $options['gray_dates']; $today = date('m-d'); if (in_array($today, $gray_dates)) { echo ''; } } } // 初始化插件 function wp_gray_dates_init() { WP_Gray_Dates::get_instance(); } add_action('plugins_loaded', 'wp_gray_dates_init');