প্রদর্শন নাম অনন্য করুন


13

এই মুহূর্তে আপনি নিজের প্রদর্শন নামটি যা খুশি তৈরি করতে পারেন, আপনি এমনকি কোনও প্রশাসকের ছদ্মবেশও তৈরি করতে পারেন। প্রদর্শন নামটি কী অনন্য করা সম্ভব?

উত্তর:


7

আমি যতটা অবগত আছি, আপনি যা করতে পারেন তা হ'ল প্রদর্শনের নামটি ফিল্টার করে pre_user_display_nameএটি ইতিমধ্যে বিদ্যমান কিনা তা পরীক্ষা করে দেখুন। দুর্ভাগ্যক্রমে WP_User_Queryজিজ্ঞাসাবাদ সমর্থন করে না display_name, সুতরাং আমাদের মাধ্যমেও এই WHEREধারাটিতে যুক্ত করতে হবে pre_user_query। অতিরিক্ত হিসাবে, display_nameইতিমধ্যে কিছুই না ফেরানোর বাইরে ইতিমধ্যে বিদ্যমান কেসটি পরিচালনা করার জন্য আমি ভাবতে পারি এমন কোনও মার্জিত উপায় নেই, যেহেতু আমরা এই সম্ভাব্য ডিসপ্লে নামটি ব্যবহারকারীর সাথে কী ব্যবহার করেছি তা ফিল্টারের মাধ্যমে আমরা জানি না। অথবা সম্ভবত আমি ক্লান্ত হয়ে পড়েছি এবং স্পষ্ট কিছু মিস করছি! যাইহোক, এখানে আমি তৈরি করেছি একটি দ্রুত পরীক্ষা:

class wpa82239_display_name {
    private $display_name;

    public function __construct(){
        add_filter( 'pre_user_display_name', array( $this, 'display_name_filter' ) );
    }

    public function display_name_filter( $display_name ){

        $this->display_name = $display_name;
        add_action( 'pre_user_query', array( $this, 'user_query_filter' ) );
        $args = array(
            'number' => 1,
            'fields' => 'ID'
        );
        $user_search = new WP_User_Query( $args );
        remove_action( 'pre_user_query', array( $this, 'user_query_filter' ) );

        if( 0 == $user_search->total_users )
            return $display_name;

        return null;
    }

    public function user_query_filter( $query ){
        global $wpdb;
        $query->query_where .= $wpdb->prepare(
            " AND $wpdb->users.display_name = %s",
            $this->display_name
        );
    }

}
$wpa82239_display_name = new wpa82239_display_name();

ওহে মিলো, এই সমাধানটির জন্য ধন্যবাদ তবে এটি যদি প্রদর্শন_র নামটি আনসেট করে দেয় তবে তা বেহুদা। এই নতুন এবং নতুন দিনে কোন ধারণা?
এফএলএক্স

আমি এটি পুরোপুরি অকেজো বলব না। সামনের প্রান্তে, আপনি প্রদর্শন নামটি ফাঁকা থাকলে লগইন করতে ডিফল্ট করতে পারেন, ব্যাক-এন্ডে, আপনি অ্যাডমিন_ফুটারের মাধ্যমে কিছুটা জাভাস্ক্রিপ্ট যুক্ত করতে পারেন যাতে একটি সতর্কতা ছড়িয়ে দেওয়া হয় যাতে বলা হয় যে তাদের অবশ্যই একটি অনন্য প্রদর্শনের নাম নির্বাচন করতে হবে।
মিলো

0

এটি বেশ নোংরা, তবে কাজটি করে, কেবল এটি আপনার থিম ফাংশন.ফ্যাপে কোনও একক সাইটে রাখুন, বা একটি মাল্টিসাইটে আপনার মু-প্লাগিন ফোল্ডারের ভিতরে একটি ফাংশন.এফপি ফাইলে রাখুন।

স্ক্রিপ্টটি বিদ্যমান ব্যবহারকারীদের স্ক্যান করবে (যদি আপনার সাইটে ইতিমধ্যে অনেকগুলি থাকে) এবং কোনও অনন্য প্রদর্শন নাম আপডেট করা হবে এবং ব্যবহারকারীর নাম দিয়ে প্রতিস্থাপন করা হবে।

আমি জানি এটি সম্পূর্ণ আদর্শ নয়, তবে বিদ্যমান ব্যবহারকারীদের সাথে ডিল করার জন্য বা পরামর্শগুলির জন্য সর্বদা স্বাগত।

 
    // Make nickname & display_name unique
    // and automatically change non unique nicks & display name to username
    // in case you already have existing users
    // by Ashok & Vaughan Montgomery
    /*
     * adding action when user profile is updated
     */
    add_action('personal_options_update', 'check_display_name');
    add_action('edit_user_profile_update', 'check_display_name');
    function check_display_name($user_id) {
            global $wpdb;
        // Getting user data and user meta data
            $err['display'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users WHERE display_name = %s AND ID <> %d", $_POST['display_name'], $_POST['user_id']));
        $err['nick'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname' AND meta.meta_value = %s AND users.ID <> %d", $_POST['nickname'], $_POST['user_id']));
        foreach($err as $key => $e) {
            // If display name or nickname already exists
            if($e >= 1) {
                $err[$key] = $_POST['username'];
                // Adding filter to corresponding error
                add_filter('user_profile_update_errors', "check_{$key}_field", 10, 3);
            }
        }
    }
    /*
     * Filter function for display name error
     */
    function check_display_field($errors, $update, $user) {
            $errors->add('display_name_error',('Sorry, Display Name is already in use. It needs to be unique.'));
            return false;
    }
    /*
     * Filter function for nickname error
     */
    function check_nick_field($errors, $update, $user) {
            $errors->add('display_nick_error',('Sorry, Nickname is already in use. It needs to be unique.'));
            return false;
    }
    /*
     * Check for duplicate display name and nickname and replace with username
     */
    function display_name_and_nickname_duplicate_check() {
        global $wpdb;
        $query = $wpdb->get_results("SELECT * FROM $wpdb->users");
        $query2 = $wpdb->get_results("SELECT * FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname'");
        $c = count($query);
        for($i = 0; $i < $c; $i++) {
            for($j = $i+1; $j < $c; $j++) {
                if($query[$i]->display_name == $query[$j]->display_name){
                    wp_update_user(
                            array(
                                  'ID' => $query[$i]->ID,
                                  'display_name' => $query[$i]->user_login
                            )
                        );
                }
                if($query2[$i]->meta_value == $query2[$j]->meta_value){
                    update_user_meta($query2[$i]->ID, 'nickname', $query2[$i]->user_login, $prev_value);
                }
            }
        }
    }
    // Call the function
    display_name_and_nickname_duplicate_check();

/*
 * Calling the display_name_and_nickname_duplicate_check() again when a new user is registered
 */
add_action( 'user_register', 'check_nickname', 10, 1 );
function check_nickname() {
    display_name_and_nickname_duplicate_check();
}


0

এটা চেষ্টা কর:

add_action('personal_options_update', 'check_display_name');
add_action('edit_user_profile_update', 'check_display_name');
function check_display_name($user_id) {
global $wpdb;
// Getting user data and user meta data
$err['display'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users WHERE display_name = %s AND ID <> %d", $_POST['display_name'], $_POST['user_id']));
$err['nick'] = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname' AND meta.meta_value = %s AND users.ID <> %d", $_POST['nickname'], $_POST['user_id']));
foreach($err as $key => $e) {
// If display name or nickname already exists
if($e >= 1) {
$err[$key] = $_POST['username'];
// Adding filter to corresponding error
add_filter('user_profile_update_errors', "check_{$key}_field", 10, 3);
}
}
}
/*
* Filter function for display name error
*/
function check_display_field($errors, $update, $user) {
$errors->add('display_name_error',__('Sorry, Display Name is already in use. It needs to be unique.'));
return false;
}
/*
* Filter function for nickname error
*/
function check_nick_field($errors, $update, $user) {
$errors->add('display_nick_error',__('Sorry, Nickname is already in use. It needs to be unique.'));
return false;
}
/*
* Check for duplicate display name and nickname and replace with username
*/
function display_name_and_nickname_duplicate_check() {
global $wpdb;
$query = $wpdb->get_results("select * from $wpdb->users");
$query2 = $wpdb->get_results("SELECT * FROM $wpdb->users as users, $wpdb->usermeta as meta WHERE users.ID = meta.user_id AND meta.meta_key = 'nickname'");
$c = count($query);
for($i = 0; $i < $c; $i++) {
for($j = $i+1; $j < $c; $j++) {
if($query[$i]->display_name == $query[$j]->display_name){
wp_update_user(
array(
'ID' => $query[$i]->ID,
'display_name' => $query[$i]->user_login
)
);
}
if($query2[$i]->meta_value == $query2[$j]->meta_value){
update_user_meta($query2[$i]->ID, 'nickname', $query2[$i]->user_login, $prev_value);
}
}
}
}
// Call the function
display_name_and_nickname_duplicate_check();

/*
* Calling the display_name_and_nickname_duplicate_check() again when a new user is registered
*/
add_action( 'user_register', 'check_nickname', 10, 1 );
function check_nickname() {
display_name_and_nickname_duplicate_check();
}

লিঙ্ক: http://bappi-d-great.com/unique-display-name-and-nickname-in-wordpress/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.