知识点 1:WordPress 钩子的基本概念
题目:WordPress 中的钩子 (Hooks) 主要分为哪两种?
A. Action 和 Filter✅
B. Get 和 Post✅
C. Add 和 Remove✅
D. Apply 和 Do✅
答案:A
解析:
根据参考资料,"WordPress 中有两种钩子,Action 和 Filter 。"Action 钩子用于在特定时间点添加自定义操作,Filter 钩子用于修改数据。这两种钩子是 WordPress 插件和主题与 WordPress 核心交互的基础。
速记句:Action 做动作,Filter 改数据, 两种钩子各有妙用。
知识点 2:Action 钩子的使用方法
题目: 如何将一个自定义函数挂载到 Action 钩子上?
A. use_action()✅
B. do_action()✅
C. add_action()✅
D. apply_action()✅
答案:C
解析:
参考资料中提到:"我们可以使用 add_action() 函数将我们的回调函数挂载到指定的 Action 上。"add_action() 函数至少需要两个参数: 钩子名称和回调函数名。
速记句: 添加 Action 用 add_action, 钩子名和函数名必须填。
知识点 3:Filter 钩子的特点
题目: 以下哪项不是 Filter 钩子的特点?
A. 可以修改数据✅
B. 应该以独立的方式运行✅
C. 不应有影响全局变量的副作用✅
D. 主要用于添加新功能✅
答案:D
解析:
参考资料指出:"Filter 应该以独立的方式运行, 不应该有影响全局变量和输出的副作用。"Filter 钩子主要用于修改数据, 而不是添加新功能。添加新功能主要是 Action 钩子的作用。
速记句:Filter 改数据不添功能, 独立运行无副作用。
知识点 4: 钩子的优先级
题目: 在 WordPress 中, 钩子的默认优先级是多少?
A. 0✅
B. 1✅
C. 10✅
D. 100✅
答案:C
解析:
参考资料中提到:"优先级为整数, 默认值为 10, 数字越小, 优先级就越高。"这意味着默认情况下, 所有挂载到同一个钩子上的函数都有相同的优先级 10 。
速记句: 钩子默认优先级 10, 数字小优先级高记住。
知识点 5: 自定义钩子的创建
题目: 创建自定义 Action 钩子应该使用哪个函数?
A. add_action()✅
B. do_action()✅
C. create_action()✅
D. apply_action()✅
答案:B
解析:
参考资料指出:"我们使用 do_action() 为创建 Action 钩子, 使用 apply_filters() 创建 Filter 钩子。"do_action() 函数用于在代码中创建一个可以被其他开发者使用的新 Action 钩子。
速记句: 创建 Action 用 do_action, 让别人能挂自己的函数。
知识点 6: 钩子命名规范
题目: 为什么应该给自定义钩子名称添加前缀?
A. 增加代码可读性✅
B. 提高执行效率✅
C. 避免名称冲突✅
D. 方便调试✅
答案:C
解析:
参考资料中强调:"为了避免与钩子名称冲突, 我们应该在钩子名称前添加一个自定义前缀, 这一点非常重要。"例如, 使用 wporg_email_body 而不是简单的 email_body 可以避免与其他插件产生冲突。
速记句: 钩子加前缀很重要, 避免冲突保平安。
知识点 7: 删除已注册的钩子回调函数
题目: 如何删除已经注册到 Action 钩子上的回调函数?
A. delete_action()✅
B. remove_action()✅
C. unset_action()✅
D. cancel_action()✅
答案:B
解析:
参考资料中提到:"我们可以使用 remove_action() 删除挂载到 Action 上的回调函数, 使用 remove_filter() 删除挂载到 Filter 上的回调函数。"需要注意的是, 删除操作必须在注册回调函数之后执行。
速记句: 删 Action 用 remove_action, 顺序很重要要记清。
知识点 8: 检查钩子执行次数
题目: 如何检查一个 Action 钩子已经执行了多少次?
A. check_action()✅
B. count_action()✅
C. did_action()✅
D. action_count()✅
答案:C
解析:
参考资料中指出:"我们可以使用 did_action() 来检查钩子运行了多少次。"这个函数在需要限制某个操作只执行一次时特别有用。
速记句: 检查 Action 执行次数,did_action 函数来帮忙。
知识点 9:"all"钩子的作用
题目:"all"钩子主要用于什么目的?
A. 执行所有注册的钩子✅
B. 删除所有钩子✅
C. 调试所有钩子✅
D. 优化所有钩子✅
答案:C
解析:
参考资料中提到:"如果我们想要一个回调函数在每一个钩子上面都被触发, 我们可以挂载回调函数到 'all' 钩子上面。在进行调试时, 这个技巧非常有用。"这可以帮助开发者确定某个事件在什么时候发生, 页面在什么时候崩溃等。
速记句: 挂"all"钩子好处多, 调试问题不用愁。
知识点 10: 当前钩子的确定
题目: 在一个同时挂载到多个钩子的回调函数中, 如何确定当前正在执行的是哪个钩子?
A. get_current_hook()✅
B. current_action()✅
C. which_hook()✅
D. active_hook()✅
答案:B
解析:
参考资料中提到:"我们可以使用 current_action() / current_filter() 来确定当前的 Action 或 Filter 。"这在一个函数需要根据不同的钩子执行不同操作时非常有用。
速记句:current_action 辨当前, 一函数多钩好帮手。
总结:
WordPress 钩子 (Hooks) 是插件和主题开发中的核心概念, 主要分为 Action 和 Filter 两种。 Action 用于在特定时间点添加自定义操作, 而 Filter 用于修改数据。使用 add_action() 和 add_filter() 函数可以将自定义函数挂载到相应的钩子上。创建自定义钩子时, 应使用 do_action() 和 apply_filters() 函数, 并注意添加前缀以避免命名冲突。在开发过程中, 还需要注意钩子的优先级、删除已注册的钩子、检查钩子执行次数等高级用法。掌握这些知识点, 将极大提高 WordPress 开发效率和代码质量。
参考文献:
- WordPress Codex: Hooks
- WordPress Developer Resources: Plugin API
- Adam Brown's WordPress Hooks Database
- WordPress.org Plugin Handbook
- Professional WordPress Plugin Development (2nd Edition) by Brad Williams, Justin Tadlock, and John James Jacoby