摘要:开发时,我们经常会使用或等钩子,以便在更新文章或分类时,增加一些附加数据,这些钩子触发的时机是发布或更新数据的时间,如果处理不好,就会出现死循环的情况,导致更新数据时出现死循环的情况。我们可以做的是在开发过程中尽量小心,避免死循环的出现。
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开发过程中遇到了死循环问题,不妨参考上面的代码进行修改,这样既能实现我们需要的功能,又不会导致死循环的问题。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31557.html
摘要:本专栏介绍如何开发设计你自己的主题。你也许想为自己开发主题,或者制作公开发行的的主题。主题的剖析主题目录位于。请避免使用数字名字,这会导致无法在主题列表中正常显示出来。快速简单的入门到了解这一方便简洁的开源系统中。 本专栏介绍如何开发设计你自己的 WordPress 主题。如果你希望了解更多如何安装和应用主题的内容,请参阅应用主题文档。本文的内容不同于应用主题,因为所讨论的是编写代码去...
摘要:本专栏介绍如何开发设计你自己的主题。你也许想为自己开发主题,或者制作公开发行的的主题。主题的剖析主题目录位于。请避免使用数字名字,这会导致无法在主题列表中正常显示出来。快速简单的入门到了解这一方便简洁的开源系统中。 本专栏介绍如何开发设计你自己的 WordPress 主题。如果你希望了解更多如何安装和应用主题的内容,请参阅应用主题文档。本文的内容不同于应用主题,因为所讨论的是编写代码去...
摘要:本专栏介绍如何开发设计你自己的主题。你也许想为自己开发主题,或者制作公开发行的的主题。主题的剖析主题目录位于。请避免使用数字名字,这会导致无法在主题列表中正常显示出来。快速简单的入门到了解这一方便简洁的开源系统中。 本专栏介绍如何开发设计你自己的 WordPress 主题。如果你希望了解更多如何安装和应用主题的内容,请参阅应用主题文档。本文的内容不同于应用主题,因为所讨论的是编写代码去...
摘要:本专栏介绍如何开发设计你自己的主题。你也许想为自己开发主题,或者制作公开发行的的主题。主题的剖析主题目录位于。请避免使用数字名字,这会导致无法在主题列表中正常显示出来。快速简单的入门到了解这一方便简洁的开源系统中。 本专栏介绍如何开发设计你自己的 WordPress 主题。如果你希望了解更多如何安装和应用主题的内容,请参阅应用主题文档。本文的内容不同于应用主题,因为所讨论的是编写代码去...
阅读 3209·2023-04-26 01:31
阅读 1850·2023-04-25 22:08
阅读 3316·2021-09-01 11:42
阅读 2795·2019-08-30 12:58
阅读 2144·2019-08-29 18:31
阅读 2404·2019-08-29 17:18
阅读 3044·2019-08-29 13:01
阅读 2503·2019-08-28 18:22