اضافه کردن فیلد جدید به پروفایل کاربر در وردپرس – دانگو وب
۱۳۹۶/۰۴/۲۰

در بخش شناسنامه‌ی کاربران فیلدهای مختلفی وجود دارد که مقادیر مختلفی را در خود ذخیره کرده است. برای مثال فیلد نام، نام خانوادگی، وبلاگ وغیره. اگر مایل به اضافه کردن فیلدی شخصی برای بلاگ خود هستید این آموزش را دنبال کنید.

برای اینکه بتوانیم فیلد مورد نظر خود را در قسمت پروفایل به نمایش بگذاریم از فیلتر user_contactmethods استفاده کرده و در ادامه تابع خود را اعمال می کنیم.

add_filter('user_contactmethods', function(){});

قصد داریم تا یک فیلد برای دریافت و ذخیره شماره همراه کاربران در نظر بگیریم. پس به صورت زیر عمل می‌کنیم:

add_filter('user_contactmethods', function ($user_contact){
    $user_contact['mobile'] = 'شماره همراه';
    return $user_contact;
});

ساختار:

-تابع یک ورودی دریافت می‌کند.

-درون تابع با اختصاص دادن کلید (mobile) و عنوان دلخواه (شماره همراه)، آن را return می‌کنیم.

پس از قرار دادن کد، فیلد شماره همراه به قسمت شناسنامه تمام کاربران اضافه خواهد شد.

اضافه کردن فیلد به صفحه ثبت نام کاربر

شاید برای شما مهم باشد که کاربران در زمان ثبت‌نام شماره همراه خود را وارد کنند. برای اینکار از طریق اکشن register_form به فرم ثبت‌نام متصل شده و فیلد خود را اضافه می‌کنیم.

add_action('register_form' , function (){
    ?>
    <p>
        <label for="mobile">شماره همراه</label>
        <input type="text"  name="mobile" id="mobile">
    </p>
    <?php
});

ساختار:

کد بالا صرفا یک لیبل و فیلد از طریق html ایجاد می‌کند.

حال برای ذخیره‌سازی مقدار ورودی از اکشن user_register (پس از ثبت نام) بصورت زیر استفاده می‌کنیم:

add_action('user_register' , function ($user_id){
    $userdata = array();
    $userdata['ID'] = $user_id;
    $userdata['mobile']  = $_POST['mobile'];
     wp_update_user($userdata);
});

ساختار:

-تابع یک ورودی که شناسه کاربر است را دریافت می‌کند.

-متغییر userdata که اطلاعات کاربر را دریافت می‌کند مساوی با یک آرایه خالی قرار می‌دهیم.

-شناسه کاربر که از ورودی دریافت شده را مساوی با کلید ID در userdata قرار می‌دهیم.

-مقدار ارسال شده از فیلد شماره همراه را مساوی با کلید mobile در userdata قرار می‌دهیم.

-در انتها با استفاده از تابع wp_update_user() کاربر را با درنظر گرفتن اطلاعات ورودی بروزرسانی می‌کنیم.

اجباری کردن فیلد در زمان ثبت‌نام

برای اجباری کردن فیلد شماره همراه در زمان ثبت نام هم بصورت زیر عمل می‌کنیم:

add_filter( 'registration_errors', function ( $error ) {
    if ( empty( $_POST['mobile'] ) || ! empty( $_POST['mobile'] ) && trim( $_POST['mobile'] ) == '' ) {
        $error->add( 'mobile_error', '<strong>خطا</strong>: شماره همراه خود را وارد نمایید.' );
    }
    return $error;
});

ساختار:

-برای فیلتر registration_errors یک تابع تعریف می‌کنیم.

-تابع یک ورودی که همان خطا می‌باشد را دریافت می‌کند.

-درون تابع تعریف می‌شود که اگر فیلد موردنظر به هر صورت خالی بود با استفاده از شی error یک خطا ایجاد شود.

-درانتها error را return می‌کنیم.

دسترسی به متای ذخیره شده

برای اینکه بتوان به متایی که در پایگاه داده ذخیره کرده‌ایم دسترسی داشته باشیم از قطعه کد زیر استفاده می‌کنیم:

$user_mobile = get_user_meta(get_current_user_id(),'mobile');
echo $user_mobile;

-به وسیله‌ی تابع get_user_meta به متاهای ذخیره شده کاربر در پایگاه داده دسترسی پیدا می‌کنیم.

-این تابع با گرفتن ۲ مقدار اصلی، آیدی کاربر و کلید متا،داده ذخیره شده را بر می‌گرداند.

-برای اینکه آیدی کاربر فعلی را داشته باشیم از تابع get_current_user_id استفاده کردیم.

-کلید متا نیز همان نامی می‌باشد که در ابتدا برای ذخیره شدن در پایگاه داده انتخاب کرده‌ بودیم.

-در انتها داده را درون یک متغییر با نام user_mobile ریخته و با دستور echo آن را به نمایش می‌گذاریم.

آخرین نوشته‌های بلاگ