Tengo un método conectado a la acción save_post, WPML se usa como un complemento de traducción, estoy tratando de encontrar una manera de que, una vez que se agrega una traducción, se haga clic en publicar y se active el método save_post para conocer la ID de la publicación original.
Hasta ahora, descubrí que esto solo se puede hacer cuando la publicación ya está publicada y se activa una actualización. Para esto, el método icl_object_id($translated_post_id, ‘post’, false, ‘en’ -> English es el idioma en el que siempre se creará la publicación original);
Ver comentario MSG para ver lo anterior en contexto.
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);
El problema es con el enlace que está utilizando, es decir, ‘save_post’
Los “save_post
” no funciona cuando publicas una publicación. Para eso puedes usar ‘publish_post
‘ gancho.
https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post
También puede verificar si “pre_post_actualización“funciona en tu caso.
Tuve una jugada y obtuve la identificación dentro del
save_post
gancho cada vez que creaba una nueva publicación. Pero no tengo el complemento WPML, por lo que eso puede cambiar las cosas. Pregunta: ¿la publicación en inglés es la principal de las publicaciones en otros idiomas? Pudowp_get_post_parent_id()
¿Haz el truco?–James Jones
30 de mayo de 2017 a las 6:41