您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
WordPress使用钩子主题开发避免死循环的方法
俞贡延2023-08-01WordPress教程已有人查阅
导读WordPress 开发时,我们经常会使用 save_post 或 create_post_tag 等钩子,以便在更新文章或分类时,增加一些附加数据,这些钩子触发的时机是发布或更新数据的时间

WordPress 开发时,我们经常会使用 save_post 或 create_post_tag 等钩子,以便在更新文章或分类时,增加一些附加数据,这些钩子触发的时机是发布或更新数据的时间,如果处理不好,就会出现死循环的情况,导致更新数据时出现死循环的情况。
举个例子,我们需要在保存文章的时候,挂在一个函数到 save_post 钩子上,这个函数的目的是修改文章标题,在文章标题前面加上作者名称,我们通过调用wp_update_post 函数来显示这个修改。示例代码如下。
add_action('save_post', 'wprs_update_post');
function wprs_update_post($post_id)
{
$title = get_the_title($post_id);
$title = "一刀:" . $title;
$args = [
'ID' => $post_id,
'post_title' => $title,
];
wp_update_post($args);
}
上面的代码中,「save_post」这个钩子发生在 wp_update_post 函数的调用过程中,通过「save_post」钩子,我们又调用了 wp_update_post 这个函数,这个函数中,又运行了「save_post」钩子。于是,程序就这么不知疲倦的运行了下去。
有经验的程序员可能很容易就发现了这个问题,可是电脑并不知道这是个死循环,我们不能去责怪电脑,毕竟那只是个没有思想的机器。我们可以做的是在开发过程中尽量小心,避免死循环的出现。
那么,怎么解决 WordPress 中出现的这个死循环呢?其实方法很简单。
怎么避免 WordPress 中的死循环还是上面的代码,我们稍作修改,就可以 的避免这个死循环了。下面是修改后的代码,对比上面出现死循环的代码,我们只添加了两行。
add_action('save_post', 'wprs_update_post');
function wprs_update_post($post_id)
{
// 获取文章标题并在文章标题前面加上作者
$title = get_the_title($post_id);
$title = "一刀:" . $title;
$args = [
'ID' => $post_id,
'post_title' => $title,
];
// 更新文章
remove_action('save_post', 'wprs_update_post');
wp_update_post($args);
add_action('save_post', 'wprs_update_post');
}
原理很简单,在运行 「wp_update_post」函数之前,我们先卸载掉挂在掉「save_post」钩子上导致死循环的函数,这样就不会出现重复执行 「wprs_update_post」函数了,更新完文章后,我们再把这个钩子挂载上,以便后续使用。
如果您在 WordPress开发过程中遇到了死循环问题,不妨参考上面的代码进行修改,这样既能实现我们需要的功能,又不会导致死循环的问题。
本文标签:
很赞哦! ()
相关教程
- (响应式)wordpress模板VieuV4.5主题资讯自媒体博客源码
- (响应式)WordPress主题Ripro9.0博客免扩展二开版
- (自适应多语言)WordPress开源主题MirageV资讯个人博客源码
- (自适应)WordPress主题SEO自媒体博客资讯模板RabbitV2.0
- WordPress主题模板JustNews资讯博客类源码V5.2.2
- (自适应)WordPress二次元博客主题Sakurairo
- 响应式WordPress简约博客主题Alt_Blog
- Wordpress博客新闻主题在线商店平台betheme 21.5.6版
- WordPress个人博客主题 - wp-Concise-v1.0免费下载
- WordPress主题模板主题巴巴/博客X主题源码免费下载
- MYcat实现wordpress库和shopxo库分库
- wordpress、Discuz产品部署示例
图文教程
wordpress设置ssl证书的方法
WordPress是目前比较流行的网站系统,由于其简单易用,即使不懂得编程技术,也可以自助建站,这样既节省了成本又节约了时间。
WordPress主题代码实现静态化的方法
WordPress主题代码怎么静态化?下面本篇文章给大家整理分享WordPress主题代码静态化教程,希望对大家有所帮助!
WordPress为什么要删除xmlrpc.php
删除xmlrpc.php可以防止攻击者远程注入恶意xml,其删除方法就是找到并打开WordPress根目录,然后直接删除xmlrpc.php文件即可。
wordpress主题安装教程
很多新手在初遇WordPress时比较迷茫,其实只要明白其运行原理就能很好的驾驭。一个很好的比喻:WordPress程序是身体、WordPress主题是衣服。
相关源码
-
(自适应响应式)门窗定制门业带视频功能pbootcms模板下载本模板采用PbootCMS内核开发,为门窗制造、定制安装企业打造,通过可视化后台管理系统快速构建品牌官网。自适应设计确保在手机、平板、电脑等设备上均能获得优质浏览体验查看源码 -
自适应建材瓷砖卫浴大理石类pbootcms网站模板源码下载为建材瓷砖、卫浴瓷砖企业打造的高端响应式门户模板,基于PbootCMS内核深度开发。采用前沿HTML5自适应架构,无缝兼容手机端触控交互与PC端展示场景。查看源码 -
(自适应响应式)英文外贸电子产品手机配件网站pbootcms模板专业级外贸网站模板基于PbootCMS内核开发,为电子产品跨境贸易企业设计。采用响应式布局技术,确保电脑、平板、手机等设备访问时自动适配显示效果。数据实时同步管理,一次编辑全平台生效。查看源码 -
(自适应响应式)APP应用程序软件介绍落地页源码免费下载该模板为营销技术从业者设计,提供专业的内容展示平台。采用响应式布局,适配软件介绍、APP推广等营销场景,通过可视化后台可快速搭建符合行业特性的展示网站。查看源码 -
自适应车行汽车租赁二手车行业企业网站模板为汽车租赁与二手车交易场景深度优化,采用PbootCMS内核开发,聚焦车辆展示、租赁流程与服务介绍三大核心模块。响应式布局确保PC与移动端数据实时同步,后台一键管理车辆信息查看源码 -
(PC+WAP)房屋建造建筑工程房地产建材行pbootcms网站模板下载本模板基于PbootCMS内核开发,为房屋建造、建筑工程及房地产建材类企业设计。通过本模板可快速搭建具有行业特色的企业官网,只需替换文字与图片内容即可适配其他行业使用。查看源码
| 分享笔记 (共有 篇笔记) |

