2016-11-24 71 views
1

我得到了無限循環錯誤。我需要在帖子創建爲默認英語時使用德語插入帖子。 我用publish_post動作鉤捕捉英語發佈事件。但是,在創建德文文章時,publish_post鉤子也由wp_insert_post()函數執行。所以發生了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

不,它是不相關的語言問題。想法是當我用英語插入帖子(默認)。 publish_post鉤子被調用,所以save_in_all_sites函數被調用。當我在save_in_all_sites函數內調用wp_insert_post函數時,publish_post鉤子被調用。我不想通過wp_insert_post調用publish_post鉤子。希望現在很清楚。謝謝。 –

+0

嘗試編寫代碼在另一個函數中存儲德語,然後調用它來獲取值。我認爲你在publish_post鉤子下有兩段代碼,所以無論何時該鉤子運行,它都會運行函數/方法或鉤子下的任何代碼,所以嘗試分離這些方法。希望這能解決它。 –