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');