2016-11-24 11 views
1

無限ループエラーが発生しました。私はポストがデフォルトの英語のために作成されるときにドイツ語でポストを挿入する必要があります。 英語の投稿イベントを捕まえるために、publish_postアクションフックを使用しました。しかし、publish_postフックはwp_insert_post()funcntionによって実行され、ドイツのポストを作成します。したがって、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フックの下に両方のコードを持っていると思うので、フックが実行されるときはいつでも、関数/メソッドまたはそのフックの下にあるコードが実行されるので、メソッドを分離してみてください。これで解決できることを願っています。 –

関連する問題