با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
به ” دوره متخصص وردپرس ” خوش آمدید!
در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
در جلسه گذشته به آموزش کار با کاربران در ساخت پلاگین پرداختیم و در ادامه به آموزش کار با متای داده های کاربر می پردازیم.
جدول کاربران وردپرس به گونه ای طراحی شده است که فقط اطلاعات اساسی در مورد کاربر را شامل می شود.
از WP 4.7 جدول شامل:
ID ، user_login ، user_pass ، user_nicename ، user_email ، user_url ، user_registered ، user_activation_key ، user_status و display_name است.
به همین دلیل ،برای ذخیره داده های اضافی ، جدول usermeta معرفی شده است که می تواند هر مقدار داده دلخواه را در مورد یک کاربر ذخیره کند.
هر دو جدول با استفاده از نظیر به نظیر بر اساس ID در جدول کاربران ، به یکدیگر گره خورده اند.
دو روش اصلی برای دستکاری کاربر فوق داده وجود دارد :
گزینه form field برای مواردی مناسب است که کاربر به قسمت مدیریت وردپرس دسترسی داشته باشد ، که در آن وی قادر به مشاهده و ویرایش پروفایل ها خواهد بود.
قبل از این که به مثال زیر بپردازیم بهتر است درک جامعی بر هوک های درگیر در این روند داشته باشیم.
edit_user_profile
hookاین هوک اکشن هر زمان که یک کاربر پروفایل کاربری خود را ویرایش می کند به کار می افتد.
به یاد داشته باشید کاربرانی که قابلیت ویرایش نمایه یا پروفایل خود را ندارند ، نمی توانند از این هوک استفاده نمایند.
show_user_profile
hookاین هوک اکشن هر زمان که یک کاربر پروفایل کاربری فرد دیگری را ویرایش می کند به کار می افتد.
به یاد داشته باشید کاربرانی که قابلیت ویرایش نمایه یا پروفایل شخص دیگری را ندارند ، نمی توانند از این هوک استفاده نمایند.
در مثال زیر می خواهیم یک قسمت تولد به تمام صفحه های نمایه اضافه کنیم.
ذخیره این قسمت در پایگاه داده در به روز رسانی های نمایه صورت می گیرد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | <?php /** * The field on the editing screens. * * @param $user WP_User user object */ function wporg_usermeta_form_field_birthday($user) { ?> <h3>It's Your Birthday</h3> <table class="form-table"> <tr> <th> <label for="birthday">Birthday</label> </th> <td> <input type="date" class="regular-text ltr" id="birthday" name="birthday" value="<?= esc_attr(get_user_meta($user->ID, 'birthday', true)); ?>" title="Please use YYYY-MM-DD as the date format." pattern="(19[0-9][0-9]|20[0-9][0-9])-(1[0-2]|0[1-9])-(3[01]|[21][0-9]|0[1-9])" required> <p class="description"> Please enter your birthday date. </p> </td> </tr> </table> <?php } /** * The save action. * * @param $user_id int the ID of the current user. * * @return bool Meta ID if the key didn't exist, true on successful update, false on failure. */ function wporg_usermeta_form_field_birthday_update($user_id) { // check that the current user have the capability to edit the $user_id if (!current_user_can('edit_user', $user_id)) { return false; } // create/update user meta for the $user_id return update_user_meta( $user_id, 'birthday', $_POST['birthday'] ); } // add the field to user's own profile editing screen add_action( 'edit_user_profile', 'wporg_usermeta_form_field_birthday' ); // add the field to user profile editing screen add_action( 'show_user_profile', 'wporg_usermeta_form_field_birthday' ); // add the save action to user's own profile editing screen update add_action( 'personal_options_update', 'wporg_usermeta_form_field_birthday_update' ); // add the save action to user profile editing screen update add_action( 'edit_user_profile_update', 'wporg_usermeta_form_field_birthday_update' ); |
این آپشن برای مورادی مناسب است که در حال ایجاد یک منطقه کاربری سفارشی هستید و / یا قصد دارید دسترسی به منطقه مدیر وردپرس را غیرفعال کنید.
توابع موجود برای دستکاری کاربر متادیتا عبارتند از: ()add_user_meta() ، update_user_meta() ، Delete_user_meta و ()get_user_meta .
1 2 3 4 5 6 | add_user_meta( int $user_id, string $meta_key, mixed $meta_value, bool $unique = false ); |
1 2 3 4 5 6 | update_user_meta( int $user_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' ); |
1 2 3 4 5 | delete_user_meta( int $user_id, string $meta_key, mixed $meta_value = '' ); |
1 2 3 4 5 | get_user_meta( int $user_id, string $key = '', bool $single = false ); |
توجه داشته باشید، اگر فقط user_id$ را عبور دهید، این تابع تمام Metadata را به عنوان یک آرایه انجمنی بازیابی می کند.
می توانید متادیتاکاربر را در هر جایی از افزونه یا تم خود ارائه دهید.
در این جلسه با آموزش کار با متای داده های کاربر همراه شما بودیم.
در جلسه بعدی شما را بیشتر با نقش ها و قابلیت های کاربر آشنا می نمایم.
با پی وی لرن همراه باشید.