2016-11-24 13 views
1

У меня получилась бесконечная ошибка цикла. Мне нужно вставить сообщение на немецкий язык, когда сообщение создано для английского языка по умолчанию. Я использовал action_post action hook для catch события публикации на английском языке. Но hook_post также выполняется с помощью wp_insert_post() fucntion при создании немецкой почты. Так возникла бесконечная ошибка. Может ли кто-нибудь помочь? Спасибо. Ниже приведен код, который я использовал.Бесконечная ошибка цикла с 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. в то время как я называл wp_insert_post внутри функции save_in_all_sites, вызывается hook_post. Я не хочу вызывать hook_post с помощью wp_insert_post. Надеюсь, теперь это ясно. Спасибо. –

+0

попробуйте написать код для хранения немецкого языка в другой функции, а затем вызвать его, чтобы получить значение. Я думаю, что у вас есть оба кода под лозунгом publish_post, поэтому, независимо от того, когда он будет запускаться, он будет запускать как функции/методы, так и любой код, находящийся под этим крючком, поэтому попробуйте разделить методы. Надеюсь, это решит это. –