钩子监听实战:如何用Xdebug断点追踪WordPress生命周期事件

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
插件开发 115 浏览 26 回复

最近在调试一个复杂的插件交互逻辑,发现单纯用error_log打印钩子执行顺序效率太低。分享下用Xdebug精准捕获钩子触发点的实战方法:

1. 关键配置(php.ini):

xdebug.mode=develop,debug
xdebug.start_with_request=yes
xdebug.discover_client_host=1

2. 在自定义钩子回调里埋点:

add_action('wp_loaded', function() {
    // 这里下断点
    $breakpoint = 1; 
    do_action('custom_plugin_hook');
});

3. 使用PhpStorm的条件断点功能:

右键断点 → 设置条件如 $_SERVER['REQUEST_URI'] === '/wp-admin/admin.php',这样只在后台请求时触发

踩坑记录:

  • 避免在init钩子断点,会卡死登录流程
  • 用did_action()函数检查前置钩子是否已触发
  • get_current_screen()在admin_init后才可用
评论26
回复 · 26
晚风里的柚子
晚风里的柚子 新手虹翼巡游 · #20 ·
支持了~
Iris
Iris 新手 · #19 ·
同求,期待更新
BrightPath
BrightPath 初级 · #18 ·
支持了~
阿琛
阿琛 新手 · #17 ·
学到了,顶一下
LunaSong
LunaSong 新手心屿荧途 · #16 ·
写得很清楚,收藏了
CoolKid
CoolKid 新手漫步繁花 · #15 ·
写得很清楚,收藏了
KnoxStar
KnoxStar 新手流金绮梦 · #14 ·
感谢分享!
韩桂
韩桂 初级 · #13 ·
支持了~
张军
张军 初级 · #12 ·
同求,期待更新
蔡超涛
蔡超涛 新手麟宫绮梦 · #11 ·
写得很清楚,收藏了
晚风里的树洞
晚风里的树洞 新手 · #10 ·
感谢分享!
🌙旅人🧡
🌙旅人🧡 初级清瑶问鼎 · #9 ·
写得很清楚,收藏了
温柔的少年
温柔的少年 新手 · #8 ·
学到了,顶一下
Zane
Zane 初级 · #7 ·
支持了~
自由的骑士
自由的骑士 初级 · #6 ·
同求,期待更新
Miles
Miles 新手漫步繁花 · #5 ·
学到了,顶一下
Yuki
Yuki 新手净世白羽 · #4 ·
学到了,顶一下
安然95
安然95 新手暖弦漫旋 · #3 ·
同求,期待更新
MilesWolf
MilesWolf 新手 · #2 ·
已解决,谢谢楼主
Chase
Chase 初级 · #1 ·
写得很清楚,收藏了
1 2
微信客服 微信客服