예를 들어 기사를 저장할 때 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); }
위 코드에서는 wp_update_post 함수 호출 과정에서 "save_post" 후크가 발생합니다. "save_post" 후크를 통해 wp_update_post 함수를 호출합니다. 이 함수에서는 "save_post" 후크도 실행됩니다. 그 결과, 프로그램은 지칠 줄 모르고 계속해서 운영되었습니다.
경험이 많은 프로그래머라면 이 문제를 쉽게 발견할 수 있지만, 컴퓨터는 이것이 무한 루프라는 사실을 모릅니다. 결국 컴퓨터는 그저 생각이 없는 기계일 뿐이라고 비난할 수는 없습니다. 우리가 할 수 있는 일은 개발 과정에서 무한 루프가 발생하지 않도록 최대한 주의를 기울이는 것입니다.
그럼 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" 함수가 반복적으로 실행되지 않도록 합니다. 기사를 업데이트한 후 후속 사용을 위해 이 후크를 마운트합니다.
워드프레스 개발 중 무한 루프 문제가 발생하는 경우, 무한 루프 문제를 일으키지 않고 필요한 기능을 구현할 수 있도록 위의 코드를 참고하여 수정하시면 좋을 것 같습니다.