WordPress 开启演示模式禁止数据写入和修改

在WordPress中启用演示模式时,可以通过使用 DEMO_MODE 常量来禁止对数据库的写操作。

以下是一个如何实现的示例:

// 定义演示模式常量
define('DEMO_MODE', true);

创建一个名为demo-mode.php的文件,并将其放置在WordPress的插件目录中(例如:wp-content/plugins/)。

在demo-mode.php文件中,添加以下代码来阻止写操作:

<?php
/* 防止在演示模式下进行写操作 */
if (!defined('DEMO_MODE')) {
    define('DEMO_MODE', false);
}
 
if (DEMO_MODE) {
    // 禁止编辑、更新、添加、删除操作
    define('DISALLOW_FILE_MODS', true);
    define('DISALLOW_FILE_EDIT', true);
 
    // 禁止数据修改
    define('DISALLOW_CORE_UPDATES', true);
    define('DISALLOW_PLUGIN_UPDATES', true);
    define('DISALLOW_THEME_UPDATES', true);
 
    // 禁止删除和修改文件
    define('DISALLOW_USER_FILE_EDIT', true);
 
    // 禁止创建、修改、删除用户
    define('DISALLOW_USER_SIGNUP', true);
    define('DISALLOW_USER_DELETION', true);
    define('DISALLOW_USER_MODICATION', true);
 
    // 禁止更改管理员密码
    define('DISALLOW_ADMIN_PASSWORD_RESET', true);
 
    // 禁止更改插件和主题
    add_filter('pre_site_transient_update_plugins', create_function('$a', "return new stdClass;"));
    add_filter('pre_site_transient_update_themes', create_function('$a', "return new stdClass;"));
 
    // 禁止使用编辑器
    add_filter('user_can_richedit', '__return_false', 10, 2);
 
    // 禁止使用插件上传功能
    add_filter('upload_is_file_based', '__return_false');
 
    // 禁止使用主题自定义器
    add_filter('theme_customize_allowed', '__return_false');
 
    // 禁止使用更新功能
    add_filter('automatic_updater_disabled', '__return_true');
}

当你将DEMO_MODE常量设置为true时,上述代码会启用演示模式,WordPress将会进入演示模式,禁止对所有数据的写操作,包括但不限于文件修改、用户修改、插件更新、主题更新等。

这样,你可以创建一个演示给访客,同时保护你的网站免受未经授权的修改。

留下评论