Pasando ID a la publicación traducida en save_post

2 minutos de lectura

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);

  • 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? Pudo wp_get_post_parent_id() ¿Haz el truco?

    –James Jones

    30 de mayo de 2017 a las 6:41

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.

¿Ha sido útil esta solución?