因为,我只能保持三分钟热度,所以,知识点一定要在三分钟之内讲完……
在 WordPress 中,一些钩子在一次请求中就会执行多次,比如 save_post 钩子。如果,我们在 save_post 钩子上添加了回调函数,这个函数也会被执行多次。
怎么才能,避免自己的回调函数被多次执行呢?首先想到的估计是全局变量 - 搞一个全局的计数变量,执行过一次后就不执行了。
示例代码:
$zhuige_callback_times = 0;
function zhuige_callback()
{
global $zhuige_callback_times;
if ($zhuige_callback_times != 0) {
return;
}
$zhuige_callback_times ++;
// ...
}
add_action('save_post', 'zhuige_callback');
其实,WordPress早就造好轮子了:did_action 函数,可以返回指定钩子执行的次数。要达到我们的要求,只要在钩子第一次执行时执行,其他直接返回即可。
function zhuige_callback()
{
if (did_action('save_post') !== 1) {
return;
}
// ...
}
add_action('save_post', 'zhuige_callback');
瞄一眼 did_action 函数的源码:
function did_action($hook_name)
{
global $wp_actions;
if (!isset($wp_actions[$hook_name])) {
return 0;
}
return $wp_actions[$hook_name];
}
原来也是全局变量……
-
WordPress插件:No category base移除分类中category插件WordPress移除分类链接中的category,早些时候追格小编分享过纯代码的解决方法,不妨看看《WordPress默认分类Category名称去掉方法》。
-
WordPress插件:Pre-Publish Checklist提醒用户完成设置才能发布文章Pre-Publish Checklist是一款提醒用户完成设置才能发布文章WordPress插件,该插件可检测网站上的文章或页面等文章类型的设置选项是否已经完成设置,如文章可控:标题、标签、特色图,若未完成不可继续下一步。
-
WordPress插件:Twenty20 Image Before-After图片比较插件Twenty20是一款专门制作图片比较的WordPress插件,该插件能让你快速在文章或页面中插入之前和之后对比图片。
-
All-in-One WP Migration(一站式WP迁移)WordPress全站迁移插件All-in-One WP Migration是一款WordPress全站迁移插件,中文名叫“一站式WP迁移”,在WordPress官网显示有超过500万的安装量,超过6000+的五星好评。
-
Wordfence Security WordPress安全插件Wordfence Security是一款WordPress安全插件,一些朋友都推荐为必装插件之一,WordPress官网显示,该插件超过400万的安装量,3400+的五星好评。
-
WordPress缓存插件Cache MasterWordPress缓存插件,追格小编早些时候也分享过,如:Lazy Load WordPress、Cachify等等。今天我们说说Cache Master,其实和其他大同小异,各有优劣势。
暂无评论,抢个沙发...