Last active
September 25, 2023 13:19
-
-
Save nikitasinelnikov/fd4c58450a2842008b938fbab1516d8e to your computer and use it in GitHub Desktop.
Debuggin `locate_user_profile()` function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Replace the function in ultimate-member/includes/core/class-rewrite.php | |
/** | |
* Locate/display a profile. | |
*/ | |
public function locate_user_profile() { | |
$permalink_base = UM()->options()->get( 'permalink_base' ); | |
if ( 'custom_meta' === $permalink_base ) { | |
$custom_meta = UM()->options()->get( 'permalink_base_custom_meta' ); | |
if ( empty( $custom_meta ) ) { | |
// Set default permalink base if custom meta is empty. | |
$permalink_base = 'user_login'; | |
} | |
} | |
if ( isset( $_GET['debug_um_profile'] ) && '1' == $_GET['debug_um_profile'] ) { | |
var_dump( $permalink_base ); | |
var_dump( um_queried_user() ); | |
var_dump( um_is_core_page( 'user' ) ); | |
} | |
if ( um_queried_user() && um_is_core_page( 'user' ) ) { | |
if ( 'user_login' === $permalink_base ) { | |
$user_id = $this->get_user_id_by_user_login_slug(); | |
} | |
if ( 'user_id' === $permalink_base ) { | |
$user_id = UM()->user()->user_exists_by_id( um_queried_user() ); | |
} | |
if ( 'hash' === $permalink_base ) { | |
$user_id = UM()->user()->user_exists_by_hash( um_queried_user() ); | |
} | |
if ( 'custom_meta' === $permalink_base ) { | |
$user_id = UM()->user()->user_exists_by_custom_meta( um_queried_user() ); | |
if ( ! $user_id ) { | |
// Try user_login by default. | |
$user_id = $this->get_user_id_by_user_login_slug(); | |
} | |
} | |
if ( in_array( $permalink_base, array( 'name', 'name_dash', 'name_dot', 'name_plus' ), true ) ) { | |
$user_id = UM()->user()->user_exists_by_name( um_queried_user() ); | |
} | |
if ( isset( $_GET['debug_um_profile'] ) && '1' == $_GET['debug_um_profile'] ) { | |
var_dump( $user_id ); | |
} | |
/** USER EXISTS SET USER AND CONTINUE **/ | |
if ( ! empty( $user_id ) ) { | |
um_set_requested_user( $user_id ); | |
if ( isset( $_GET['debug_um_profile'] ) && '1' == $_GET['debug_um_profile'] ) { | |
var_dump( 'User isset in query' ); | |
um_fetch_user( $user_id ); | |
$account_status = um_user( 'account_status' ); | |
var_dump( $account_status ); | |
exit; | |
} | |
/** | |
* Fires after setting requested user. | |
* | |
* @param {int} $user_id Requested User ID. | |
* | |
* @since 1.3.x | |
* @hook um_access_profile | |
* | |
* @example <caption>Some action on user access profile and requested user isset.</caption> | |
* add_action( 'um_access_profile', 'my_access_profile', 10, 1 ); | |
* function my_access_profile( $user_id ) { | |
* // your code here | |
* } | |
*/ | |
do_action( 'um_access_profile', $user_id ); | |
} else { | |
wp_safe_redirect( um_get_core_page( 'user' ) ); | |
exit; | |
} | |
} elseif ( um_is_core_page( 'user' ) ) { | |
if ( isset( $_GET['debug_um_profile'] ) && '1' == $_GET['debug_um_profile'] ) { | |
var_dump( 'No user in query' ); | |
exit; | |
} | |
if ( is_user_logged_in() ) { // just redirect to their profile | |
$query = UM()->permalinks()->get_query_array(); | |
$url = um_user_profile_url( um_user( 'ID' ) ); | |
if ( $query ) { | |
foreach ( $query as $key => $val ) { | |
$url = add_query_arg( $key, $val, $url ); | |
} | |
} | |
wp_safe_redirect( $url ); | |
exit; | |
} | |
/** | |
* Filters the redirect URL from user profile for not logged-in user. | |
* | |
* @param {string} $url Redirect URL. By default, it's a home page. | |
* | |
* @return {string} Redirect URL. | |
* | |
* @since 1.3.x | |
* @hook um_locate_user_profile_not_loggedin__redirect | |
* | |
* @example <caption>Change redirect URL from user profile for not logged-in user to WordPress native login.</caption> | |
* function my_user_profile_not_loggedin__redirect( $url ) { | |
* // your code here | |
* $url = wp_login_url(); | |
* return $url; | |
* } | |
* add_filter( 'um_locate_user_profile_not_loggedin__redirect', 'my_user_profile_not_loggedin__redirect' ); | |
*/ | |
$redirect_to = apply_filters( 'um_locate_user_profile_not_loggedin__redirect', home_url() ); | |
if ( ! empty( $redirect_to ) ) { | |
um_safe_redirect( $redirect_to ); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment