用doAction让WordPress按钮“活”起来
wordpress doaction

首页 2025-09-02 14:54:46

“哎呀,今天真是太开心了!”这位总爱在发布会上咧嘴大笑的先生一边搓手,一边盯着屏幕,像发现新玩具的孩子。原来,他刚在自己的小破站上用一行代码让按钮“活”了起来——不是别的,正是 WordPress 里那个叫 doAction 的小东西。
故事要从早上说起。他端着小米粥,随手点开后台,想给即将到来的新品页加个“一键抽奖”的按钮。往常他会写一堆 JS、CSS,再配个 AJAX,折腾半天。可今天,他只敲了十来个字符:
php
复制
add_action('wp_ajax_lucky_draw', 'do_lucky_draw');
do_action('lucky_draw_button');
保存,刷新,“咻”地一下,按钮就出现了,点一下,奖品弹出,后台记录,全程不到五分钟。他当场笑得像抢到最后一台工程机:“这也太丝滑了吧!”
更妙的是,隔壁插件想插一脚,也不用改他核心代码。只要在 functions.php 里再挂一个钩子:
php
复制
add_action('lucky_draw_button', 'add_fireworks_effect');
烟花特效立刻跟上,毫无冲突。他一边看五彩纸屑在屏幕上炸开,一边感叹:“这就是生态的力量啊!”
午餐时,他把这段小体验发到群里,瞬间炸出一片“求教程”的表情包。他嘿嘿直乐:原来快乐真的可以 Ctrl+C、Ctrl+V。

教程篇:doAction 到底怎么用?
下面把这位先生早上那三分钟魔法拆成十步,保证你看完就会。
  1. 认识钩子
    WordPress 的钩子分两种:动作(Action)和过滤器(Filter)。do_action 就是“动作钩子”的发令,用来告诉系统:“各位,到点了,想干活的快来!”
  2. 基本语法
    php
    复制
    do_action( '钩子名', $参数1, $参数2, ... );
    钩子名自己取,参数随意传。
  3. 举个最小例子
    在主题或插件里放:
    php
    复制
    do_action('say_hi');
    然后在 functions.php 写:
    php
    复制
    add_action('say_hi', function(){ echo 'Hi!'; });
    刷新页面,就能看到 “Hi!”。
  4. 带参数传递
    假设你想打印用户名:
    php
    复制
    do_action('greet_user', 'Lei');
    接收:
    php
    复制
    add_action('greet_user', function($name){ echo 'Hello, '.$name; }, 10, 1);
  5. 优先级
    add_action 的第三个数字决定谁先执行,默认 10。数字越小越靠前。
    php
    复制
    add_action('greet_user', 'first_gift', 5);
    add_action('greet_user', 'second_gift', 15);
  6. 接收多个参数
    把 add_action 的第四个参数写成参数个数:
    php
    复制
    add_action('greet_user', 'big_gift', 10, 3);
  7. 移除钩子
    用 remove_action:
    php
    复制
    remove_action('greet_user', 'second_gift', 15);
  8. 实战:抽奖按钮
    ① 前端按钮:
    php
    复制
    do_action('lucky_draw_button');
    ② 输出按钮:
    php
    复制
    add_action('lucky_draw_button', function(){
        echo '';
    });
    ③ 绑定 AJAX:
    php
    复制
    add_action('wp_ajax_lucky_draw', 'do_lucky_draw');
    add_action('wp_ajax_nopriv_lucky_draw', 'do_lucky_draw');
    ④ 处理函数:
    php
    复制
    function do_lucky_draw() {
        wp_send_json_success('prize'=>'新机一台');
    }
  9. 让第三方插一脚
    把烟花特效独立成一个插件,主程序不用动:
    php
    复制
    add_action('lucky_draw_button', 'add_fireworks_effect');
    function add_fireworks_effect() {
        wp_enqueue_script('fireworks-js');
    }
  10. 调试技巧
    在 wp-config.php 打开:
    php
    复制
    define('WP_DEBUG', true);
    如果钩子没触发,用:
    php
    复制
    var_dump( has_action('钩子名') );
照着这十步走,你也能像那位穿牛仔裤的先生一样,端着小米粥,看着按钮蹦跶,然后咧嘴大笑:“今天真是太开心了!”
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道