From 4c686bb33213f1ac68958801df23ff47d2203af3 Mon Sep 17 00:00:00 2001 From: Champ Camba Date: Thu, 5 Jan 2017 17:20:38 +0800 Subject: [PATCH] Fix logout compatibility with WPML --- core/um-logout.php | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/core/um-logout.php b/core/um-logout.php index 95f7cb84..39605a44 100644 --- a/core/um-logout.php +++ b/core/um-logout.php @@ -12,27 +12,58 @@ class UM_Logout { *** @Logout via logout page ***/ function logout_page() { + + + $has_translation = false; + $language_code = ''; + + if ( function_exists('icl_object_id') || function_exists('icl_get_current_language') ) { + + $logout_page_id = $ultimatemember->permalinks->core['logout']; + $logout = get_post( $logout_page_id ); + + if ( isset( $logout->post_name ) ) { + + $logout_slug = $logout->post_name; + + if( function_exists('icl_get_current_language') ){ + $language_code = icl_get_current_language(); + }else if( function_exists('icl_object_id') && defined('ICL_LANGUAGE_CODE') ){ + $language_code = ICL_LANGUAGE_CODE; + } + + // Logout page translated slug + $lang_post_id = icl_object_id( $logout->ID, 'post', FALSE, $language_code ); + $lang_post_obj = get_post( $lang_post_id ); + if( isset( $lang_post_obj->post_name ) ){ + $has_translation = true; + } + + + } + } - if ( um_is_core_page('logout') ) { + if ( um_is_core_page('logout') || $has_translation ) { if ( is_user_logged_in() ) { - if ( isset($_REQUEST['redirect_to']) && $_REQUEST['redirect_to'] !== '' ) { + if ( isset( $_REQUEST['redirect_to'] ) && $_REQUEST['redirect_to'] !== '' ) { wp_logout(); session_unset(); exit( wp_redirect( $_REQUEST['redirect_to'] ) ); } else if ( um_user('after_logout') == 'redirect_home' ) { wp_logout(); session_unset(); - um_redirect_home(); + exit( wp_redirect( home_url( $language_code ) ) ); } else { wp_logout(); session_unset(); exit( wp_redirect( um_user('logout_redirect_url') ) ); + } } else { - um_redirect_home(); + exit( wp_redirect( home_url( $language_code ) ) ); } }