5

save_postアクションに接続するメソッドがあります。WPMLは翻訳プラグインとして使用されています。翻訳が追加され、パブリッシュされ、save_postメソッドが呼び出される方法を見つけようとしています。元の投稿のIDを知るようトリガーされました。save_postの翻訳済みポストにIDを渡す

これまでのところ、これは、投稿が既に公開されていて、更新がトリガーされたときにのみ行うことができます。このために、icl_object_id($ translated_post_id、 'post'、false、 'en' - >英語は元の投稿が常に作成される言語です)のメソッドです。

コメントを見るMSGは文脈で上記を参照してください。

function my_project_updated_send_email($post_id, $post, $update){ 


    if ('publish' == get_post_status($post_id) && 'events' == get_post_type($post)) { 

    if(ICL_LANGUAGE_CODE == 'en'){ 
    // Shortened - Everything works fine 

    }elseif (ICL_LANGUAGE_CODE == 'it'){ 

     //Get English Language Post ID 
     $id = icl_object_id($post_id,'post',false,'en'); 
     //MSG: $id returns empty on publish, but returns fine on update 

     $event_id = get_field('event_id', $id); 

     if($event_id == ""){ 
     // Shortened - Everything works fine 
     } 

    } 

    } 

} 

add_action('save_post', 'my_project_updated_send_email', 10, 3); 
+0

新しい投稿を作成するたびに、私は遊びがあり、 'save_post'フック内でIDを取得しました。しかし、私は物事を変えるかもしれないようにWPMLプラグインを持っていません。質問 - 英語の投稿は他の言語の投稿の親ですか? 'wp_get_post_parent_id()'はこのトリックを行うことができますか? –

答えて

2

問題は、あなたが投稿を公開するとき、「save_post」は動作しない、すなわち「save_post」

を使用しているフックです。そのためには、 'publish_post'フックを使用することができます。

https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post

"pre_post_update" は、あなたのケースで動作するかどうかも確認します。

関連する問題