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

شناسنامه کاربر وردپرس
این فیلد می تونه آی دی تلگرام، لینک پروفایل اینستاگرام و یا لینک پروفایل کلابهوس باشه .
برای اضافه کردن فیلد جدید در پروفایل هر کاربر این کد رو به فانکشن قالب اضافه می کنیم . البته برای اینکه تغییرات از بین نره بهتره که به فانکشن قالب چایلد اضافه بشه . (راهنمای ایجاد قالب چایلد)
add_action( 'show_user_profile', 'extra_user_profile_fields', 10, 1 ); add_action( 'edit_user_profile', 'extra_user_profile_fields', 10, 1 ); function extra_user_profile_fields( $user ) { ?> <h3><?php _e("تماس با اطلاعات بیشتر", "blank"); ?></h3> <table class="form-table"> <tr> <th><label for="author_avatar"><?php _e("لینک تصویر آواتار "); ?></label></th> <td> <input type="text" name="author_avatar" id="author_avatar" value="<?php echo esc_attr( get_the_author_meta( 'author_avatar', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e("لینک تصویر آواتار رو وارد کنید."); ?></span> </td> </tr> <tr> <th><label for="author_telegram"><?php _e("آی دی تلگرام "); ?></label></th> <td> <input type="text" name="author_telegram" id="author_telegram" value="<?php echo esc_attr( get_the_author_meta( 'author_telegram', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e("آی دی تلگرام رو وارد کنید."); ?></span> </td> </tr> <tr> <th><label for="author_clubhouse"><?php _e("آی دی کلاب هوس "); ?></label></th> <td> <input type="text" name="author_clubhouse" id="author_clubhouse" value="<?php echo esc_attr( get_the_author_meta( 'author_clubhouse', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e("آی دی کلاب هوس رو وارد کنید."); ?></span> </td> </tr> </table> <?php } add_action( 'personal_options_update', 'save_extra_user_profile_fields' ); add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' ); function save_extra_user_profile_fields( $user_id ) { if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-user_' . $user_id ) ) { return; } if ( !current_user_can( 'edit_user', $user_id ) ) { return false; } update_user_meta( $user_id, 'author_avatar', $_POST['author_avatar'] ); update_user_meta( $user_id, 'author_telegram', $_POST['author_telegram'] ); update_user_meta( $user_id, 'author_clubhouse', $_POST['author_clubhouse'] ); }
به وسیله کدهای بالا که به فایل فانکشن قالب اضافه شد 3 تا فیلد جدید به فیلدهای کاربری کاربران وردپرس اضافه میشه .
فیلدی آی دی تلگرام که برای ارتباط با نویسنده و یا کاربر میشه ازش استفاده کرد
فیلد پروفایل کلوبهاوس که جدیدا مورد استقبال قرار گرفته
و فیلد آواتار : در مورد این فیلد ، علت اضافه کردنش این بود که در بعضی از سایت ها ، کاربران به طور مستقیم توسط مدیر سایت اضافه میشن و ایمیلی که استفاده میشه ایمیل واقعی نیست و طبیعتا آواتاری وجود نداره که نمایش داده بشه . از طرفی ممکن هست که نویسنده و کاربری نخواد از ایمیل اصلی خودش استفاده کنه و یا اینکه نخواد از تصویر آوتار متصل به ایمیل ثبت نامی اش استفاده کنه و بخواد از تصویر دیگه ای استفاده کنه .
با استفاده از این کد امکان این هست که تصویر جدیدی از نویسنده و یا کاربر توسط ادمین و یا خودکاربر در محیط وردپرس و یا هر سایت دیگه ای آپلود شده و در قسمت مربوط به تصویر جدید در پروفایل کاربری وارد بشه .
وقتی این فیلد پر بشه از تصویر این قسمت استفاده میشه و اگر این قسمت خالی باشه طبق روال معمول از آواتار معرفی و متصل شده به ایمیل در گراواتار استفاده میشه

اضافه کردن فیلد های جدید در ناحیه کاربری
اطلاعات این سه فیلد در متای یوزر کاربر ذخیره میشن و هر جا نیاز بود در صفحات داخلی و یا در صفحه نویسنده که نیاز به نمایش اطلاعات نویسنده هست می تونیم این اطلاعات رو نمایش بدیم :
$user = get_user_by( 'id', get_the_author_meta('ID') ); $user_id=$user->ID; $userMeta= get_user_meta( $user->ID ); $author_telegram= $userMeta['author_telegram'] [0]; $author_clubhouse = $userMeta['author_clubhouse'][0]; $gurl=$userMeta['author_avatar']['0']; if(empty($gurl)) { $gurl=get_avatar_url($user_email, array('size' => 150)); }