Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- add_filter( 'em_event_save_events', 'em_wpml_connect_recurring_translations', 10, 4 );
- function em_wpml_connect_recurring_translations( $result, $event, $event_ids, $post_ids ) {
- global $wpdb;
- // Only do this for successfully saved recurring events.
- if ( $result && $event->recurrence ) {
- // Get the original post for this recurring event.
- $trid = apply_filters( 'wpml_element_trid', false, $event->post_id, 'post_event-recurring' );
- $translations = apply_filters( 'wpml_get_element_translations', false, $trid, 'post_event-recurring' );
- $original = wp_list_filter( $translations, array( 'original' => 1 ) );
- $original = reset( $original );
- // We dont need to do anything to originals.
- if ( empty( $original ) || $original->element_id == $event->post_id ) {
- return;
- }
- // We are saving a translation, lets connect them to their originals.
- $original->event_id = get_post_meta( $original->element_id, '_event_id', true );
- $originals = $wpdb->get_col( $wpdb->prepare(
- "SELECT post_id FROM {$wpdb->prefix}em_events WHERE recurrence_id = %d",
- $original->event_id
- ) );
- $language = apply_filters( 'wpml_element_language_code', null, array(
- 'element_id' => $event->post_id,
- 'element_type' => 'post_event-recurring'
- ) );
- foreach ( $post_ids as $i => $post_id ) {
- $trid = apply_filters( 'wpml_element_trid', false, $originals[ $i ], 'post_event' );
- $args = array(
- 'element_id' => $post_id,
- 'element_type' => 'post_event',
- 'trid' => $trid,
- 'language_code' => $language,
- 'source_language_code' => $original->language_code
- );
- do_action( 'wpml_set_element_language_details', $args );
- }
- }
- return $result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement