رفتن به مطلب

نمایش نام خانوادگی کاربر در دیدگاه ها بجای نام کاربری


پست های پیشنهاد شده

 من میخوام کاربرانی که در سایت لاگین کردند موقعی که میخوان نظر بدن بجای نام کاربری در نظرات نام و نام خانودگی آنها در نظرات نمایش داده شود. چجوری میتونم این کار را انجام بدم؟

برای دیدگاه ها از افزونه ای استفاده نمی کنم. برای ثبت نام کاربر از افزونه user registration استفاده می کنم. برای کاربران ثبت نام کرده در سایت هم بطور پیشفرض از نام کاربری برای نظرات استفاده می شود.

لینک به ارسال

سلام

قبل از کد، کاربر مهمان هم در بخش دیدگاه میتونه چیزی ارسال کنه؟

لینک به ارسال
در ۱ ساعت قبل، hoshmand1 گفته است :

 من میخوام کاربرانی که در سایت لاگین کردند موقعی که میخوان نظر بدن بجای نام کاربری در نظرات نام و نام خانودگی آنها در نظرات نمایش داده شود. چجوری میتونم این کار را انجام بدم؟

برای دیدگاه ها از افزونه ای استفاده نمی کنم. برای ثبت نام کاربر از افزونه user registration استفاده می کنم. برای کاربران ثبت نام کرده در سایت هم بطور پیشفرض از نام کاربری برای نظرات استفاده می شود.

کد زیر رو داخل فایل functions.php قالب فعال/قالب فرزند تون قرار بدید.

متاسفانه امکان درج کد وجود نداره برای من و فایل رو ضمیمه کردم

 

comentor-author-name.txt

لینک به ارسال
در 44 دقیقه قبل، Morteza گفته است :

سلام

قبل از کد، کاربر مهمان هم در بخش دیدگاه میتونه چیزی ارسال کنه؟

بله کاربر مهمان هم میتونه با وارد کردن نام و ایمیل، نظر خود را ارسال کند و در نظرات نام او نمایش داده می شود ولی کاربر ثبت نام کرده نام کاربری او نمایش داده می شود

لینک به ارسال
در 15 دقیقه قبل، yazdaniwp گفته است :

کد زیر رو داخل فایل functions.php قالب فعال/قالب فرزند تون قرار بدید.

متاسفانه امکان درج کد وجود نداره برای من و فایل رو ضمیمه کردم

 

comentor-author-name.txt 565 B · 3 دریافت

ممنون از کدی که ارسال کردید.

نام کاربر ثبت نام کرده درست شد و نام او را نمایش می دهد ولی نام کاربر مهمان را حذف کرده و کاربر مهمان را جایگزین ان کرد.

باز هم ممنون

لینک به ارسال

من هم کدی پیدا کردم و این کد را در functions.php قرار دادم و درست کار میکند

/**
 * Format WordPress User's "Display Name" to Full Name on Login
 * ------------------------------------------------------------------------------
 */

add_action( 'wp_login', 'wpse_9326315_format_user_display_name_on_login' );

function wpse_9326315_format_user_display_name_on_login( $username ) {
    $user = get_user_by( 'login', $username );

    $first_name = get_user_meta( $user->ID, 'first_name', true );
    $last_name = get_user_meta( $user->ID, 'last_name', true );

    $full_name = trim( $first_name . ' ' . $last_name );

    if ( ! empty( $full_name ) && ( $user->data->display_name != $full_name ) ) {
        $userdata = array(
            'ID' => $user->ID,
            'display_name' => $full_name,
        );

        wp_update_user( $userdata );
    }
}

 

لینک به ارسال

سلام

به ترتیب

  1. نمایش نام کاربری
  2. نمایش ایمیل
  3. نمایش نام
  4. نمایش نام خانوادگی
  5. نمایش نام انتخابی
  6. نمایش ایدی
$current_user = wp_get_current_user();
 
/*
 * @example Safe usage: $current_user = wp_get_current_user();
 * if ( ! ( $current_user instanceof WP_User ) ) {
 *     return;
 * }
 */
printf( __( 'Username: %s', 'textdomain' ), esc_html( $current_user->user_login ) ) . '<br />';
printf( __( 'User email: %s', 'textdomain' ), esc_html( $current_user->user_email ) ) . '<br />';
printf( __( 'User first name: %s', 'textdomain' ), esc_html( $current_user->user_firstname ) ) . '<br />';
printf( __( 'User last name: %s', 'textdomain' ), esc_html( $current_user->user_lastname ) ) . '<br />';
printf( __( 'User display name: %s', 'textdomain' ), esc_html( $current_user->display_name ) ) . '<br />';
printf( __( 'User ID: %s', 'textdomain' ), esc_html( $current_user->ID ) );

اطلاعات بیشتر

https://developer.wordpress.org/reference/functions/wp_get_current_user/

 

لینک به ارسال
در 3 ساعت قبل، hoshmand1 گفته است :

من هم کدی پیدا کردم و این کد را در functions.php قرار دادم و درست کار میکند


/**
 * Format WordPress User's "Display Name" to Full Name on Login
 * ------------------------------------------------------------------------------
 */

add_action( 'wp_login', 'wpse_9326315_format_user_display_name_on_login' );

function wpse_9326315_format_user_display_name_on_login( $username ) {
    $user = get_user_by( 'login', $username );

    $first_name = get_user_meta( $user->ID, 'first_name', true );
    $last_name = get_user_meta( $user->ID, 'last_name', true );

    $full_name = trim( $first_name . ' ' . $last_name );

    if ( ! empty( $full_name ) && ( $user->data->display_name != $full_name ) ) {
        $userdata = array(
            'ID' => $user->ID,
            'display_name' => $full_name,
        );

        wp_update_user( $userdata );
    }
}

 

خواهش میکنم. این کدی که استفاده میکنید اصولی نیست. با هر بار لاگین چک میکنه که کاربر نام و نام خانوادگی داره یا خیر و اطلاعات کاربر رو بروز میکنه. چند ایراد داره:

1- تا کاربر لاگین نکنه اطلاعات بروز نمیشه.

2- با هر بار لاگین دارید این کد رو اجرا میکنید در صورتیکه نیازی بهش نیست.

3- ممکنه کاربر اصلا وارد بخش کامنت نشه و این کد اجرا میشه در هر صورت.

ولی کدی که من دادم فقط در زمان بازدید کامنت ها اجرا میشه و البته اگه کاربر لاگین هم نکرده باشه درست نمایش میده اطلاعات رو. میشه کد رو بهینه تر کرد به این شکل که فقط یکبار برای هر کاربر اجرا بشه:

add_filter( 'get_comment_author', 'ywp_show_comentor_fn_ln', 10, 3 ) ;
function ywp_show_comentor_fn_ln( $author, $comment_id, $comment ) {
    $fname = $lname = '';

    $uid = $comment->user_id;

	if( $uid == 0 ) {
		return $author;
	}

    if ( $uid ) {
        $uobj	= get_userdata( $uid );

		if( get_user_meta( $uid, '_name_created', true ) ) {
			return $uobj->display_name;
		}

        $fname 	= $uobj->user_firstname;
        $lname 	= $uobj->user_lastname; 
    }

    if ( $fname || $lname ) {
        $author = $fname . ' ' . $lname; 
        $author = trim( $author );
    }

	add_user_meta( $uid, '_name_created', '1', true );

	wp_update_user( array (
			'ID' 			=> $uid,
			'display_name' 	=>  $author,
		)
	);

    return $author;
}

این کد فقط یکبار اجرا میشه برای تغییرات و هر وقت برای اولین بار کامنت ها دیده بشن، برای کل نویسندگان کامنت های اون بخش اطلاعات کاربری اصلاح میشن.

لینک به ارسال
در 22 ساعت قبل، yazdaniwp گفته است :

خواهش میکنم. این کدی که استفاده میکنید اصولی نیست. با هر بار لاگین چک میکنه که کاربر نام و نام خانوادگی داره یا خیر و اطلاعات کاربر رو بروز میکنه. چند ایراد داره:

1- تا کاربر لاگین نکنه اطلاعات بروز نمیشه.

2- با هر بار لاگین دارید این کد رو اجرا میکنید در صورتیکه نیازی بهش نیست.

3- ممکنه کاربر اصلا وارد بخش کامنت نشه و این کد اجرا میشه در هر صورت.

ولی کدی که من دادم فقط در زمان بازدید کامنت ها اجرا میشه و البته اگه کاربر لاگین هم نکرده باشه درست نمایش میده اطلاعات رو. میشه کد رو بهینه تر کرد به این شکل که فقط یکبار برای هر کاربر اجرا بشه:


add_filter( 'get_comment_author', 'ywp_show_comentor_fn_ln', 10, 3 ) ;
function ywp_show_comentor_fn_ln( $author, $comment_id, $comment ) {
    $fname = $lname = '';

    $uid = $comment->user_id;

	if( $uid == 0 ) {
		return $author;
	}

    if ( $uid ) {
        $uobj	= get_userdata( $uid );

		if( get_user_meta( $uid, '_name_created', true ) ) {
			return $uobj->display_name;
		}

        $fname 	= $uobj->user_firstname;
        $lname 	= $uobj->user_lastname; 
    }

    if ( $fname || $lname ) {
        $author = $fname . ' ' . $lname; 
        $author = trim( $author );
    }

	add_user_meta( $uid, '_name_created', '1', true );

	wp_update_user( array (
			'ID' 			=> $uid,
			'display_name' 	=>  $author,
		)
	);

    return $author;
}

این کد فقط یکبار اجرا میشه برای تغییرات و هر وقت برای اولین بار کامنت ها دیده بشن، برای کل نویسندگان کامنت های اون بخش اطلاعات کاربری اصلاح میشن.

ممنون از راهنمایی های شما . از کد شما استفاده میکنم

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...