Created
October 13, 2023 23:01
-
-
Save nikitasinelnikov/272e32b53b191d4a3810537cc0d00056 to your computer and use it in GitHub Desktop.
Generate own logic custom usermeta slug
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
// 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