151 lines
5.1 KiB
PHP
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();
|