2016-11-24 3 views
1

무한 루프 오류가 발생했습니다. 게시물이 기본 영어로 작성 될 때 독일어로 게시물을 삽입해야합니다. 나는 영어 게시 이벤트를 잡기 위해 publish_post action hook을 사용했습니다. 그러나 publish_post 훅은 wp_insert_post() fucntion에 의해 실행되어 독일 포스트를 생성합니다. 따라서 infiniter 오류가 발생했습니다. 아무도 도와 줄 수 있습니까? 고맙습니다. 아래는 내가 사용한 코드입니다.publish_post 및 wp_insert_post의 무한 루프 오류

add_action('publish_post', 'save_in_all_sites' ); 

    function save_in_all_sites($post_id){ 

    global $sitepress; 

     $my_post = array(
     'post_title' => $post_title, 
     'post_content' => $post_content, 
     'post_status' => $post_status 

     ); 

     $def_trid = $sitepress->get_element_trid($post_id); 

     $ru_post_id1 = wp_insert_post($my_post); 
     // insert the post in German language 

      $sitepress->set_element_language_details($ru_post_id1, 'post_post', $def_trid, 'de'); 

    } 

답변

1

wp_insert_post 바로 전에 후크를 제거한 다음 바로 뒤에 추가해야합니다.

remove_action('publish_post', 'save_in_all_sites' ); 
$ru_post_id1 = wp_insert_post($my_post); 
add_action('publish_post', 'save_in_all_sites' ); 
+1

고맙습니다. 오로라. 그것은 효과가 있었다. –

0

영어의 코드는 어디에 있습니까? 그것입니까 $def_trid? 그렇다면 당신은 영어와 독일어 언어 모두를 element_language_details으로 설정하고 있으므로 영어와 독일어로 된 모든 것을 데이터베이스에 별도의 열로 별도로 설정하려고합니다.

+0

어떤 것이 언어 문제와 관련하지 않습니다. 아이디어는 영어로 게시물을 삽입 할 때 (기본값)입니다. save_in_all_sites 함수가 호출되도록 publish_post 훅이 호출된다. 반면 save_in_all_sites 함수 내에서 wp_insert_post를 호출하면 publish_post 후크가 호출됩니다. wp_insert_post에 의해 publish_post 훅을 호출하고 싶지 않습니다. 희망은 지금 분명합니다. 고맙습니다. –

+0

독일어 언어를 다른 함수에 저장하는 코드를 작성한 다음 값을 얻기 위해 호출하십시오. 나는 publish_post 훅 아래에 두 코드를 모두 가지고 있다고 생각한다. 그래서 훅이 실행될 때마다 함수/메소드 또는 그 코드 밑의 코드를 모두 실행할 것이므로 메소드를 분리 해보자. 희망이 그것을 해결할 것입니다. –