Skip to content

Instantly share code, notes, and snippets.

@nikitasinelnikov
Last active September 25, 2023 13:19
Show Gist options
  • Save nikitasinelnikov/fd4c58450a2842008b938fbab1516d8e to your computer and use it in GitHub Desktop.
Save nikitasinelnikov/fd4c58450a2842008b938fbab1516d8e to your computer and use it in GitHub Desktop.
Debuggin `locate_user_profile()` function
// 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