Files
wp-grayscale-memorial/wp-grayscale-memorial.php
LinRuiqi 42f7860029 commit
2025-08-03 10:35:04 +08:00

151 lines
5.1 KiB
PHP

<?php
/**
* Plugin Name: WP Grayscale Memorial
* Plugin URI: https://example.com/wp-grayscale-memorial
* Description: 在指定的日期范围内让网站变灰,用于纪念日或哀悼日。过期自动恢复,无需禁用插件。
* Version: 1.0.0
* Author: Craft AI
* Author URI: https://example.com
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Text Domain: wp-grayscale-memorial
* Domain Path: /languages
*/
// 如果直接访问此文件,则退出
if (!defined('ABSPATH')) {
exit;
}
class WP_Grayscale_Memorial {
/**
* 插件初始化
*/
public function __construct() {
// 添加管理菜单
add_action('admin_menu', array($this, 'add_admin_menu'));
// 注册设置
add_action('admin_init', array($this, 'register_settings'));
// 前端显示灰度效果
add_action('wp_head', array($this, 'apply_grayscale_effect'));
// 注册卸载钩子
register_uninstall_hook(__FILE__, array('WP_Grayscale_Memorial', 'uninstall'));
}
/**
* 添加管理菜单
*/
public function add_admin_menu() {
add_options_page(
'网站变灰设置',
'网站变灰设置',
'manage_options',
'wp-grayscale-memorial',
array($this, 'admin_page_display')
);
}
/**
* 注册插件设置
*/
public function register_settings() {
register_setting('wp_grayscale_memorial_settings', 'wp_grayscale_memorial_start_date');
register_setting('wp_grayscale_memorial_settings', 'wp_grayscale_memorial_end_date');
register_setting('wp_grayscale_memorial_settings', 'wp_grayscale_memorial_enabled', array(
'type' => 'boolean',
'default' => false,
));
}
/**
* 显示管理页面
*/
public function admin_page_display() {
?>
<div class="wrap">
<h1>网站变灰设置</h1>
<form method="post" action="options.php">
<?php settings_fields('wp_grayscale_memorial_settings'); ?>
<?php do_settings_sections('wp_grayscale_memorial_settings'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">启用变灰效果</th>
<td>
<input type="checkbox" name="wp_grayscale_memorial_enabled" value="1" <?php checked(get_option('wp_grayscale_memorial_enabled'), 1); ?> />
</td>
</tr>
<tr valign="top">
<th scope="row">开始日期</th>
<td>
<input type="date" name="wp_grayscale_memorial_start_date" value="<?php echo esc_attr(get_option('wp_grayscale_memorial_start_date')); ?>" />
<p class="description">变灰效果开始的日期(包含当天)</p>
</td>
</tr>
<tr valign="top">
<th scope="row">结束日期</th>
<td>
<input type="date" name="wp_grayscale_memorial_end_date" value="<?php echo esc_attr(get_option('wp_grayscale_memorial_end_date')); ?>" />
<p class="description">变灰效果结束的日期(包含当天)</p>
</td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
/**
* 应用灰度效果
*/
public function apply_grayscale_effect() {
// 检查是否启用
$enabled = get_option('wp_grayscale_memorial_enabled');
if (!$enabled) {
return;
}
// 获取日期设置
$start_date = get_option('wp_grayscale_memorial_start_date');
$end_date = get_option('wp_grayscale_memorial_end_date');
// 如果没有设置日期,则不执行
if (empty($start_date) || empty($end_date)) {
return;
}
// 获取当前日期
$current_date = current_time('Y-m-d');
// 检查当前日期是否在设定范围内
if ($current_date >= $start_date && $current_date <= $end_date) {
// 输出CSS使整个网站变灰
echo '<style type="text/css">
html {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
filter: gray;
}
</style>';
}
}
/**
* 卸载插件时清除数据
*/
public static function uninstall() {
delete_option('wp_grayscale_memorial_start_date');
delete_option('wp_grayscale_memorial_end_date');
delete_option('wp_grayscale_memorial_enabled');
}
}
// 初始化插件
new WP_Grayscale_Memorial();