我有一个连接到save_post动作的方法,WPML被用作翻译插件,我试图找到一种方法,一旦添加了翻译,点击发布并触发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 :(得分:2)
问题在于你正在使用的钩子,即' save_post'
" save_post
"发布帖子时不起作用。为此,您可以使用' publish_post
'钩。
https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post
您还可以检查" pre_post_update "适用于您的情况。