### [WordPress使用钩子进行主题开发时怎么避免死循环](https://www.prosaas.cn/article/8284) **Published:** 2021-04-30T02:07:15 **Author:** 5201314 **Excerpt:** 下面由WordPress教程栏目给大家介绍WordPress使用钩子进行主题开发时怎么避免死循环,希望对需要的… 下面由**WordPress**教程栏目给大家介绍WordPress使用钩子进行主题开发时怎么避免死循环,希望对需要的朋友有所帮助! ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212131043621.jpg) **WordPress 使用钩子进行主题开发时避免死循环** 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使用钩子进行主题开发时怎么避免死循环的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** WordPress ---