mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-15 20:53:39 +09:00
Refactor profile permalink
This commit is contained in:
+51
-37
@@ -279,31 +279,26 @@ class UM_Permalinks {
|
||||
$first_name = um_user( 'first_name' );
|
||||
$last_name = um_user( 'last_name' );
|
||||
$full_name = um_user( 'display_name' );
|
||||
$full_name = preg_replace('/\s+/', ' ', $full_name); // Remove double spaces
|
||||
|
||||
$arr_search_keywords = array( um_user( 'display_name' ), "{$first_name} {$last_name}");
|
||||
$profile_slug = $this->profile_slug( $full_name, $first_name, $last_name );
|
||||
|
||||
foreach ( $arr_search_keywords as $keyword ) {
|
||||
|
||||
$search = preg_replace('/\s+/', ' ', $keyword );
|
||||
|
||||
// Check for duplicate names
|
||||
$args = array(
|
||||
'search' => $search,
|
||||
'search_columns' => array( 'display_name' ),
|
||||
'orderby' => 'registered',
|
||||
'order' => 'ASC',
|
||||
'fields' => array('user_registered','ID')
|
||||
);
|
||||
|
||||
$user_query = new WP_User_Query( $args );
|
||||
if( $user_query->total_users > 1 ){
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
$args = array(
|
||||
'meta_query' => array(
|
||||
'relation' => 'AND',
|
||||
array(
|
||||
'key' => 'um_user_profile_url_slug_'.$permalink_base,
|
||||
'value' => $profile_slug,
|
||||
'compare' => '='
|
||||
),
|
||||
),
|
||||
'orderby' => 'registered',
|
||||
'order' => 'ASC',
|
||||
'fields' => array('user_registered','ID'),
|
||||
'exclude' => array( um_user("ID") ),
|
||||
);
|
||||
|
||||
// Remove double spaces
|
||||
$full_name = preg_replace('/\s+/', ' ', $full_name);
|
||||
$user_query = new WP_User_Query( $args );
|
||||
|
||||
$duplicate_hash_name = md5( $full_name );
|
||||
|
||||
@@ -322,7 +317,39 @@ class UM_Permalinks {
|
||||
if( ! empty( $duplicate_id ) && $duplicate_id != um_user('ID') ){
|
||||
$full_name = $full_name.' ' . um_user( 'ID' );
|
||||
}
|
||||
|
||||
$user_in_url = $this->profile_slug( $full_name, $first_name, $last_name );
|
||||
|
||||
update_user_meta( um_user('ID'), 'um_user_profile_url_slug_'.$permalink_base, strtolower( $user_in_url ) );
|
||||
}
|
||||
|
||||
if ( get_option('permalink_structure') ) {
|
||||
|
||||
$profile_url = trailingslashit( untrailingslashit( $profile_url ) );
|
||||
$profile_url = $profile_url . strtolower( $user_in_url ). '/';
|
||||
|
||||
} else {
|
||||
|
||||
$profile_url = add_query_arg( 'um_user', $user_in_url, $profile_url );
|
||||
|
||||
}
|
||||
|
||||
return $profile_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate profile slug
|
||||
* @param string $full_name
|
||||
* @param string $first_name
|
||||
* @param string $last_name
|
||||
* @return string
|
||||
*/
|
||||
function profile_slug( $full_name, $first_name, $last_name ){
|
||||
|
||||
$permalink_base = um_get_option('permalink_base');
|
||||
|
||||
$user_in_url = '';
|
||||
|
||||
switch( $permalink_base )
|
||||
{
|
||||
case 'name': // dotted
|
||||
@@ -422,22 +449,9 @@ class UM_Permalinks {
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
update_user_meta( um_user('ID'), 'um_user_profile_url_slug_'.$permalink_base, strtolower( $user_in_url ) );
|
||||
|
||||
if ( get_option('permalink_structure') ) {
|
||||
|
||||
$profile_url = trailingslashit( untrailingslashit( $profile_url ) );
|
||||
$profile_url = $profile_url . strtolower( $user_in_url ). '/';
|
||||
|
||||
} else {
|
||||
|
||||
$profile_url = add_query_arg( 'um_user', $user_in_url, $profile_url );
|
||||
|
||||
}
|
||||
|
||||
return $profile_url;
|
||||
return $user_in_url ;
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
|
||||
Reference in New Issue
Block a user