WordPress 使用钩子进行主题开发时避免死循环

文 / @WordPress主题

关于WordPress中的死循环问题

作为一个小本本,我在开始学习WordPress开发时也曾遇到过死循环的问题。在更新文章或分类时,增加一些附加数据是我们经常需要做的事情,而这时我们会经常使用save_postcreate_post_tag等钩子来实现,但如果处理不好,就会导致更新数据时出现死循环。

解决WordPress中的死循环

实际上,避免这个问题的方法很简单,只需要在调用wp_update_post函数之前,先卸载掉挂在掉save_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,
  ];

  //卸载save_post钩子
  remove_action('save_post','wprs_update_post');

  //更新文章
  wp_update_post($args);

  //重新挂载save_post钩子
  add_action('save_post', 'wprs_update_post');
}

通过这种方式,我们就可以完美地避免出现死循环问题了。希望对你在WordPress开发过程中遇到的相关问题有所帮助。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。