20 调试、测试与维护

整理 WP_DEBUG、日志、Query Monitor 思路、错误处理、计划任务和维护清单。

20 调试、测试与维护

本页关键词

WP_DEBUG error_log WP_Error cron maintenance

学习目标

代码使用提醒

本页代码适合用于学习和研究。复制到正式网站前,请先备份,并优先在测试环境验证。

涉及用户输入、后台保存、接口请求、删除操作和邮件发送时,要同时考虑权限、nonce、sanitize、validate 和 escape。

1. wp-config 调试配置

调试
<?php define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
正式站不建议把错误直接显示给访客。

2. 写入调试日志

调试
<?php error_log( 'Contact form handler started.' ); $data = array( 'name' => 'Test', 'status' => 'ok' ); error_log( print_r( $data, true ) );
临时排查可用 error_log,修复后应清理过多日志。

3. 处理 WP_Error

稳定
<?php $response = wp_remote_get( 'https://example.com/api' ); if ( is_wp_error( $response ) ) { error_log( $response->get_error_message() ); return; } $body = wp_remote_retrieve_body( $response );
调用接口、插入数据、上传文件时都可能返回 WP_Error。

4. 注册计划任务

维护
<?php function mysite_schedule_daily_task() { if ( ! wp_next_scheduled( 'mysite_daily_cleanup' ) ) { wp_schedule_event( time(), 'daily', 'mysite_daily_cleanup' ); } } add_action( 'wp', 'mysite_schedule_daily_task' ); function mysite_daily_cleanup_callback() { // 每日清理逻辑。 } add_action( 'mysite_daily_cleanup', 'mysite_daily_cleanup_callback' );
WP-Cron 依赖访问触发,不等同于系统 cron。

5. 停用插件时清理计划任务

维护
<?php function mysite_clear_scheduled_tasks() { $timestamp = wp_next_scheduled( 'mysite_daily_cleanup' ); if ( $timestamp ) { wp_unschedule_event( $timestamp, 'mysite_daily_cleanup' ); } } register_deactivation_hook( __FILE__, 'mysite_clear_scheduled_tasks' );
注册了计划任务,就要考虑停用时清理。

6. 维护模式短路输出

维护
<?php function mysite_simple_maintenance_mode() { if ( current_user_can( 'manage_options' ) ) { return; } if ( get_option( 'mysite_maintenance_mode' ) ) { wp_die( '网站维护中,请稍后访问。', 'Maintenance', array( 'response' => 503 ) ); } } add_action( 'template_redirect', 'mysite_simple_maintenance_mode' );
维护模式要允许管理员访问,且返回合适状态码。

7. 基础维护检查清单代码注释

维护
<?php /** * 每次更新前检查: * 1. 备份数据库和文件 * 2. 记录当前 WordPress / 主题 / 插件版本 * 3. 在测试环境更新 * 4. 测试首页、表单、购物车、登录、搜索 * 5. 查看 debug.log 是否有新错误 */
把维护流程写进项目文档,比只靠记忆更可靠。

本页总结

调试维护的重点是日志、错误处理、计划任务和复测流程。任何修复都要以备份和可回滚为前提。