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

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

امروز یک افزونه جدید برای شما ایجاد کردم. افزونه ای که با روش های تماس کاربران سروکار دارد. اساساً هنگامی که کاربر را در مدیریت ویرایش می کنید، یک بلوک “اطلاعات تماس” وجود دارد. خوب، من می خواهم به شما نشان دهم که چگونه فیلدهای خود را در آنجا اضافه کنید، و برای اینکه کمی جلوتر بروید، چگونه این فیلدهای جدید را در صفحه ثبت نام نشان دهید (یا نه).

در اینجا پیش‌نمایش چیزی است که می‌خواهیم ایجاد کنیم:

فیلدهای کاربر جدید در صفحه ویرایش

فیلدهای سفارشی در صفحه ثبت نام

و برای انجام این کار، طبق معمول، یک افزونه زیبا و ساده ایجاد می کنیم!

مرحله 1: ایجاد افزونه

یک پوشه جدید در wp-content/plugins ایجاد کنید و آن را “custom-user-contact-methods” نامید. در داخل این پوشه تازه ایجاد شده، فایلی به نام “rc-custom-user-contact-methods.php” ایجاد کنید و آن را در نرم افزار ویرایشگر مورد علاقه خود باز کنید.

این محتوا را در فایل خالی خود قرار دهید. این کد به سادگی افزونه را ثبت می کند:

مرحله 2: فیلدهای سفارشی خود را تعریف کنید

بعد، باید متغیری ایجاد کنیم که شامل فیلدهای سفارشی ما، مواردی که در صفحه ویرایش کاربر و همچنین در صفحه پیش فرض ثبت نام استفاده می شود، باشد. بیایید این فیلدها را در متغیری به نام $extra_fields ذخیره کنیم.

$extra_fields = array( 
	array('facebook', __('Facebook Username', 'rc_cucm' ), true),
	آرایه('twitter', __('Twitter Username', 'rc_cucm'), true)
	آرایه('googleplus', __('Google+ ID', 'rc_cucm' ), true)
	آرایه('linkedin', __('Linked In ID', 'rc_cucm' ), false)
	آرایه('pinterest', __('Pinterest' Username', 'rc_cucm'), false)
	array('wordpress', __('WordPress.org Username', 'rc_cucm'), false)
	آرایه ('phone', __('Phone Number', 'rc_cucm' ), true)
);

ما هر فیلد را در یک آرایه ذخیره می کنیم که دارای 3 پارامتر است، اولی شناسه فیلد، دومی برچسب فیلد و آخرین مورد یک اطلاعات بولی است که مشخص می کند آیا فیلد در ثبت نام نشان داده می شود یا خیر. صفحه یا نه شما می توانید هر تعداد پارامتر که می خواهید اضافه کنید، به عنوان مثال یک مکان یا یک اطلاعات مورد نیاز.

مرحله 3: فیلتر مناسب را قلاب کنید

اکنون باید یک تابع را به فیلتر سمت راست متصل کنیم. در مورد خاص ما، فیلتر «user_contactmethods» است و نام تابعی که می‌خواهیم ایجاد کنیم «rc_add_user_contactmethods» است.

// از user_contactmethods برای افزودن فیلدهای جدید استفاده کنید
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );

مرحله 4: فیلدهای سفارشی ما را ایجاد کنید

اکنون باید تابع “rc_add_user_contactmethods” را ایجاد کنیم. این یکی است که فیلدهای سفارشی ما را به صفحه ویرایش کاربر اضافه می کند. خبر خوب این است که ما فیلدهای خود را در یک آرایه ذخیره کردیم، به این معنی که تابع زیر کاملاً پویا خواهد بود و اضافه کردن فیلدهای جدید فقط با تغییر متغیر $extra_fields بسیار آسان خواهد بود.

/**
 * روش های تماس سفارشی کاربران را اضافه کنید
 *
 * @access عمومی
 * @از 1.0 
 * @return void
*/
تابع rc_add_user_contactmethods($user_contactmethods) {

	// فیلدها را دریافت کنید
	جهانی $extra_fields;
	
	// نمایش هر فیلد
	foreach ( $extra_fields به عنوان $field ) {
		if ( !isset( $contactmethods[ $field[0] ] )
    		$user_contactmethods[ $field[0] ] = $field[1];
	}

    // روش های تماس را برمی گرداند
    $user_contactmethods را برگردانید.
}

در این مرحله، اگر افزونه را ذخیره و فعال کنید، باید فیلدهای سفارشی خود را در صفحه ویرایش کاربر مشاهده کنید. از آنجایی که ما از قلاب صحیح استفاده می کنیم، نیازی به ایجاد داده های فیلد “ذخیره” نداریم. بنابراین، افزونه در حال حاضر عالی کار می کند. اما من می خواهم کمی جلوتر رفته و گزینه نمایش آن فیلدها را در صفحه ثبت نام اضافه کنم. مطمئن شوید که در قسمت تنظیمات کادر انتخاب «هر کسی می‌تواند ثبت نام کند» را علامت بزنید، در غیر این صورت نمی‌توانید پیوند «ثبت‌نام» را ببینید.

مرحله 5: ثبت قلاب های صفحه

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

بیایید توابع خود را قلاب کنیم:

// فیلدهای ما را به فرآیند ثبت نام اضافه کنید
add_action('register_form', 'rc_register_form_display_extra_fields');
add_action('user_register', 'rc_user_register_save_extra_fields', 100);

مرحله 6: صفحه ثبت فیلدهای سفارشی را نمایش دهید

در کد بالا دو تابع را اعلام کردیم. اولین مورد نمایش فیلدها در صفحه ثبت نام است. در این قسمت باید به پارامتر سوم هر آرایه در $extra_fields رسیدگی کنیم. این پارامتر بولی می گوید که آیا فیلدها باید نشان داده شوند یا نه. درست: فیلد نشان داده شده است، نادرست: فیلد نشان داده نشده است.

/**
 * نمایش فیلدهای سفارشی در صفحه ثبت نام
 *
 * اگر پارامتر سوم فیلد روی true تنظیم شده باشد، فیلدهای سفارشی را در ثبت نام نشان دهید
 *
 * @access عمومی
 * @از 1.0 
 * @return void
 */
تابع rc_register_form_display_extra_fields() {
	
	// فیلدها را دریافت کنید
	جهانی $extra_fields;

	// اگر پارامتر سوم روی "true" تنظیم شود، هر فیلد را نمایش دهید
	foreach ( $extra_fields به عنوان $field ) {
		اگر ($field[2] == درست است) { 
		$field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : '';
		echo '

'; } // endif } // پایان foreach }

مرحله 7: ذخیره مقادیر فیلدها پس از فرآیند ثبت نام

اکنون که فیلدهای ما در صفحه ثبت نام نشان داده شده اند، باید مقادیر آنها را در پایگاه داده ذخیره کنیم. این هدف تابع “rc_user_register_save_extra_fields” است. برای انجام این کار، باید از “wp_update_user( )” تابع.

/**
 * ذخیره مقادیر فیلد
 *
 * @access عمومی
 * @از 1.0 
 * @return void
*/
تابع rc_user_register_save_extra_fields($user_id, $password = '', $meta = array() ) {

	// فیلدها را دریافت کنید
    جهانی $extra_fields;
    
    $userdata = array();
    $userdata['ID'] = $user_id;
    
    // هر فیلد را ذخیره کنید
    foreach ( $extra_fields به عنوان $field ) {
    	if($field[2] == درست است ) { 
	    	$userdata[ $field[0] ] = $_POST[ $field[0] ];
	    } // endif
	} // پایان foreach

    $new_user_id = wp_update_user( $userdata );
}

نتیجه گیری

خب، ما اصول اولیه نحوه افزودن فیلدهای جدید به روش‌های تماس کاربر را دیدیم، اما همین. برای مثال می‌توانید فیلدهای موجود مانند «Yahoo IM»، «AIM» و «Jabber» را با یک unset ساده حذف کنید. اما شما همچنین می توانید برخی از عملکردها را برای تمیز کردن فیلدهای سفارشی خود اضافه کنید تا به عنوان مثال بررسی کنید که آیا شماره تلفن فرمت مناسبی دارد یا خیر، آیا فیلدی مورد نیاز است یا نه و غیره… از درخواست ویژگی های خاص در نظرات دریغ نکنید!< /p>

اوه، و آخرین مورد… اگر می خواهید داده های هر یک از زمینه های خود را نمایش دهید، به سادگی از این استفاده کنید:

// Param 1 شناسه کاربر است
// Param 2 شناسه فیلد است
// Param 3 برای دریافت var یا آرایه وجود دارد
echo get_user_meta( 1, 'twitter', true );  
خروج از نسخه موبایل