Skip to content

Instantly share code, notes, and snippets.

@nikitasinelnikov
Created October 13, 2023 23:01
Show Gist options
  • Save nikitasinelnikov/272e32b53b191d4a3810537cc0d00056 to your computer and use it in GitHub Desktop.
Save nikitasinelnikov/272e32b53b191d4a3810537cc0d00056 to your computer and use it in GitHub Desktop.
Generate own logic custom usermeta slug
// Generate slug in format: {First Name}-{First letter of Last Name}~{hash}
function um_custom_generate_custom_slug( $user_obj ) {
return strtolower( $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 ) . '~' . substr( strrev( md5( uniqid( 'um_user_hash' . $user_obj->ID, true ) . $user_obj->ID ) ), 0, 5 ) );
}
function um_update_custom_usermetaaa( $user_id ) {
$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 ) ) {
$user_obj = get_userdata( $user_id );
if ( ! empty( $user_obj->first_name ) && ! empty( $user_obj->last_name ) ) {
$db_value = get_user_meta( $user_id, $custom_meta . '-names', true );
$new_names = $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 );
if ( $new_names !== $db_value ) {
update_user_meta( $user_id, $custom_meta . '-names', $new_names );
update_user_meta( $user_id, $custom_meta, um_custom_generate_custom_slug( $user_obj ) );
}
}
}
}
}
add_action( 'um_after_user_account_updated', 'um_update_custom_usermetaaa', 10 );
function um_update_custom_usermeta_user_profile( $to_update, $user_id ) {
$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 ) ) {
$user_obj = get_userdata( $user_id );
if ( ! empty( $user_obj->first_name ) && ! empty( $user_obj->last_name ) ) {
$db_value = get_user_meta( $user_id, $custom_meta . '-names', true );
$new_names = $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 );
if ( $new_names !== $db_value ) {
update_user_meta( $user_id, $custom_meta . '-names', $new_names );
update_user_meta( $user_id, $custom_meta, um_custom_generate_custom_slug( $user_obj ) );
}
}
}
}
}
add_action( 'um_user_after_updating_profile', 'um_update_custom_usermeta_user_profile', 10, 2 );
function um_insert_custom_usermeta( $user_id ) {
$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 ) ) {
$user_obj = get_userdata( $user_id );
if ( ! empty( $user_obj->first_name ) && ! empty( $user_obj->last_name ) ) {
update_user_meta( $user_id, $custom_meta . '-names', $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 ) );
update_user_meta( $user_id, $custom_meta, um_custom_generate_custom_slug( $user_obj ) );
}
}
}
}
add_action( 'um_registration_complete', 'um_insert_custom_usermeta', 99 );
function um_insert_custom_usermeta_admin( $user_id ) {
if ( ! is_admin() ) {
return;
}
$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 ) ) {
$user_obj = get_userdata( $user_id );
if ( ! empty( $user_obj->first_name ) && ! empty( $user_obj->last_name ) ) {
update_user_meta( $user_id, $custom_meta . '-names', $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 ) );
update_user_meta( $user_id, $custom_meta, um_custom_generate_custom_slug( $user_obj ) );
}
}
}
}
add_action( 'user_register', 'um_insert_custom_usermeta_admin', 999 );
function um_update_custom_usermeta_admin( $user_id ) {
if ( ! is_admin() ) {
return;
}
$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 ) ) {
$user_obj = get_userdata( $user_id );
if ( ! empty( $user_obj->first_name ) && ! empty( $user_obj->last_name ) ) {
$db_value = get_user_meta( $user_id, $custom_meta . '-names', true );
$new_names = $user_obj->first_name . '-' . substr( $user_obj->last_name, 0, 1 );
if ( $new_names !== $db_value ) {
update_user_meta( $user_id, $custom_meta . '-names', $new_names );
update_user_meta( $user_id, $custom_meta, um_custom_generate_custom_slug( $user_obj ) );
}
}
}
}
}
add_action( 'profile_update', 'um_update_custom_usermeta_admin', 999 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment