You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress的register_activation_hook中检查变量值

调试register_activation_hook内代码的实用方法

因为WordPress插件激活钩子是后台静默执行的,echo、alert这类前端输出方式根本没用,Query Monitor也因为激活流程的特殊性抓不到这个阶段的信息,试试这几个靠谱的调试方案:

1. 写入调试日志

这是最稳妥的方式,直接把变量内容写到日志文件里。

首先在wp-config.php里开启调试日志:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); // 避免前端显示错误

然后在你的激活钩子代码里加入日志写入逻辑:

$data_store = \WC_Data_Store::load('webhook');
$all_hooks = $data_store->search_webhooks(
    array(
        'limit' => 10,
    )
);
// 写入查询到的所有webhook数据
error_log( '所有Webhook数据:' . print_r( $all_hooks, true ) );

$_items = array_map('wc_get_webhook', $all_hooks->webhooks);
foreach ($_items as $webhook) {
    $name = $webhook->get_name();
    // 写入单个webhook的名称
    error_log( '当前Webhook名称:' . $name );
    
    if ($name === "Test Hook") {
        $webhook->set_status('active');
        $webhook->save();
        // 写入操作日志
        error_log( '已激活Test Hook' );
    }
}

激活插件后,去wp-content/debug.log文件里就能看到所有调试内容了。

2. 重定向传递调试信息

利用激活后跳回插件列表页的特性,把调试数据通过URL参数传递过去显示:

在激活钩子代码末尾加入重定向逻辑:

// 把需要调试的变量转成URL安全的字符串
$debug_content = urlencode( print_r( $_items, true ) );
// 跳回插件列表页并带上调试参数
wp_redirect( admin_url( 'plugins.php?activation_debug=' . $debug_content ) );
exit;

然后在插件主文件里加一段临时代码,用来显示调试信息:

add_action( 'admin_notices', function() {
    if ( isset( $_GET['activation_debug'] ) ) {
        echo '<div class="notice notice-info"><pre>' . urldecode( $_GET['activation_debug'] ) . '</pre></div>';
        // 只显示一次,避免每次刷新都出现
        remove_action( current_action(), __FUNCTION__ );
    }
} );

激活插件后,插件列表页会弹出包含调试数据的通知框,调试完记得删掉这段代码。

3. 临时存储到数据库

把调试数据存到WordPress的选项表里,之后在后台查看:

在激活钩子里加入存储逻辑:

// 把webhook数据存到options表
update_option( 'temp_activation_debug', print_r( $_items, true ) );

然后加一个临时的后台页面用来读取数据:

add_action( 'admin_menu', function() {
    add_submenu_page(
        'tools.php',
        '激活调试数据',
        '激活调试数据',
        'manage_options',
        'activation-debug-page',
        function() {
            $debug_data = get_option( 'temp_activation_debug' );
            if ( $debug_data ) {
                echo '<pre>' . $debug_data . '</pre>';
                // 看完就删掉数据,避免占用空间
                delete_option( 'temp_activation_debug' );
            } else {
                echo '<p>没有调试数据</p>';
            }
        }
    );
} );

激活插件后,去后台「工具」菜单下找到「激活调试数据」页面就能看到内容,调试完成后记得删除这段代码。


内容的提问来源于stack exchange,提问作者Mustafa Yusuf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:01:11