When a post is updated, WPML updates all the translations of the post, but Relevanssi only indexes the post that was updated, not the corresponding posts in other languages. This method hooks into save_post
after WPML to tell Relevanssi also to index the matching translations.
add_action( 'save_post', 'index_post_in_all_languages', 110, 2 ); function index_post_in_all_languages( $post_ID, $post ) { if ( ! function_exists( 'relevanssi_insert_edit' ) ) { return; } $trid = apply_filters( 'wpml_element_trid', null, $post_ID, "post_{$post->post_type}" ); if ( ! $trid ) { return; } $translations = apply_filters( 'wpml_get_element_translations', null, $trid, $post->post_type ); foreach ( $translations as $lang => $translation ) { $translation_id = absint( $translation->element_id ); if ( ! empty( $translation_id ) && $translation_id !== $post_ID ) { relevanssi_insert_edit( $translation_id ); } } }
Thanks to Garrett McGilvray / Éditions CEB.
There’s a similar solution for Polylang Pro synced posts.