تابع get_user_meta در وردپرس
در وردپرس، دادههای مربوط به کاربران مانند بیوگرافی، شماره تماس، تصویر پروفایل، نقش کاربری و سایر اطلاعات سفارشی در جدول usermeta پایگاه داده ذخیره میشوند. برای دسترسی به این دادهها، تابع get_user_meta() یکی از مهمترین و پرکاربردترین توابع است. این تابع به توسعهدهندگان اجازه میدهد تا متادیتای کاربر را بخوانند و در قالبهای مختلف سایت استفاده کنند.
مفهوم متادیتا (Meta Data) در وردپرس
متادیتا به معنای «دادهای درباره دادهها» است. در مورد کاربران وردپرس، این دادهها شامل اطلاعات تکمیلی هستند که به هر کاربر متصل میشوند. مثلاً ایمیل اصلی کاربر در جدول users ذخیره میشود، اما شماره تماس یا شبکههای اجتماعی در جدول usermeta نگهداری میشوند.
ساختار جدول usermeta در پایگاه داده وردپرس
| ستون | توضیح |
|---|---|
umeta_id | شناسه یکتای متادیتا |
user_id | شناسه کاربر مرتبط |
meta_key | کلید متا (نام فیلد داده) |
meta_value | مقدار متادیتا |
نحوه استفاده از تابع get_user_meta()
تابع get_user_meta() برای بازیابی اطلاعات متادیتای کاربر از پایگاه داده استفاده میشود. ساختار کلی آن به شکل زیر است:
get_user_meta( int $user_id, string $meta_key = '', bool $single = false );توضیح پارامترها
- $user_id: شناسه کاربری که میخواهید متادیتای او را بخوانید.
- $meta_key: کلید متادیتای مورد نظر (اختیاری). اگر خالی باشد، همه متادیتاها بازگردانده میشوند.
- $single: اگر مقدار آن
trueباشد، تنها یک مقدار برمیگرداند؛ در غیر این صورت آرایهای از مقادیر بازگردانده میشود.
نمونه کد ساده برای دریافت داده
$user_id = 5;
$phone = get_user_meta( $user_id, 'phone_number', true );
echo $phone;
در این مثال، شماره تلفن کاربر با شناسه ۵ از متادیتا با کلید phone_number گرفته و چاپ میشود. چون پارامتر سوم مقدار true دارد، تنها اولین مقدار (و نه آرایهای از مقادیر) بازمیگردد.
دریافت تمام متادیتاهای یک کاربر
$user_id = 5;
$all_meta = get_user_meta( $user_id );
print_r( $all_meta );
در این حالت، آرایهای شامل همه کلیدها و مقادیر متادیتای کاربر بازگردانده میشود. این روش برای دیباگ یا بررسی دادههای ذخیرهشده بسیار مفید است.
استفاده از get_user_meta() در قالب وردپرس
اگر در فایل single.php یا author.php نیاز به نمایش داده کاربر دارید، میتوانید از تابع زیر استفاده کنید:
$user_id = get_the_author_meta( 'ID' );
$bio = get_user_meta( $user_id, 'description', true );
echo '<p>' . esc_html( $bio ) . '</p>';
تابع esc_html() برای جلوگیری از نمایش کدهای ناامن (XSS) استفاده میشود و از بهترین روشهای امنیتی وردپرس است.
افزودن متادیتای جدید برای کاربر
برای افزودن متادیتای جدید باید از تابع add_user_meta() استفاده کنید:
add_user_meta( $user_id, 'phone_number', '09123456789', true );
پارامتر چهارم در این تابع مشخص میکند که اگر متادیتا از قبل وجود داشته باشد، مقدار جدید اضافه شود یا خیر. مقدار true یعنی اگر کلید مشابهی موجود باشد، داده جدید ذخیره نشود.
بهروزرسانی و حذف متادیتا
برای بهروزرسانی مقدار یک متادیتا:
update_user_meta( $user_id, 'phone_number', '09351234567' );
و برای حذف آن:
delete_user_meta( $user_id, 'phone_number' );
بهتر است هنگام حذف یا ویرایش متادیتا، ابتدا بررسی کنید آیا کلید مورد نظر وجود دارد یا خیر تا از خطا جلوگیری شود.
نمونه کد ترکیبی برای بررسی و ویرایش
$user_id = get_current_user_id();
$meta_key = 'phone_number';
$current_phone = get_user_meta( $user_id, $meta_key, true );
if ( ! empty( $current_phone ) ) {
update_user_meta( $user_id, $meta_key, '09999999999' );
} else {
add_user_meta( $user_id, $meta_key, '09999999999', true );
}
در این مثال ابتدا بررسی میشود که آیا مقدار فعلی برای کلید phone_number وجود دارد یا نه. در صورت وجود، مقدار جدید بهروزرسانی میشود، در غیر این صورت، یک متادیتای جدید افزوده میشود.
نکات امنیتی و بهینهسازی در استفاده از get_user_meta()
- استفاده از فیلترها: همیشه مقادیر متادیتا را قبل از چاپ با توابعی مانند
esc_html()یاsanitize_text_field()فیلتر کنید. - عدم استفاده در حلقههای سنگین: اگر درون یک حلقه کاربر دارید، بهتر است دادهها را یکبار واکشی کرده و در متغیر ذخیره کنید تا از درخواستهای متعدد به پایگاه داده جلوگیری شود.
- ذخیره موقت (Caching): وردپرس بهطور خودکار نتایج
get_user_meta()را در حافظه کش ذخیره میکند. بنابراین نیاز نیست برای هر بار اجرای تابع، نگرانی از کندی داشته باشید، مگر در شرایط خاص با تعداد زیاد کاربر.
مقایسه توابع مرتبط
| تابع | کاربرد |
|---|---|
get_user_meta() | دریافت داده متادیتای کاربر |
add_user_meta() | افزودن متادیتای جدید برای کاربر |
update_user_meta() | بهروزرسانی متادیتای موجود |
delete_user_meta() | حذف متادیتا از کاربر |
کاربردهای حرفهای تابع get_user_meta()
- ایجاد پروفایل سفارشی: با استفاده از متادیتا میتوان فیلدهای اضافی مانند شبکههای اجتماعی، تاریخ تولد یا موقعیت جغرافیایی را به صفحه پروفایل کاربر افزود.
- فرمهای عضویت و ویرایش حساب: در پلاگینهایی مثل Ultimate Member یا فرمهای سفارشی با
get_user_meta()اطلاعات اضافی کاربران نمایش داده میشود. - سیستمهای امتیاز و پاداش: متادیتا میتواند برای ذخیره امتیاز، سطح کاربری یا تاریخ آخرین ورود استفاده شود.
- نمایش محتوای شخصیسازیشده: بر اساس دادههای متادیتا، محتوای سفارشی برای هر کاربر نمایش داده میشود (مثلاً پیام خوشآمدگویی خاص).
نمونه کاربردی برای پیام شخصیسازیشده
$user_id = get_current_user_id();
$first_name = get_user_meta( $user_id, 'first_name', true );
if ( $first_name ) {
echo 'سلام، ' . esc_html( $first_name ) . ' عزیز!';
} else {
echo 'سلام کاربر گرامی!';
}
این قطعه کد با بررسی متادیتای first_name، نام کوچک کاربر را نمایش میدهد و در صورت نبود مقدار، پیام پیشفرض نشان داده میشود.
جمعبندی و نکات نهایی
- تابع
get_user_meta()یکی از ابزارهای کلیدی برای توسعه شخصیسازی در وردپرس است. - اطمینان حاصل کنید که همیشه دادهها را قبل از نمایش اعتبارسنجی و ضدعفونی کنید.
- در پروژههای بزرگ، استفاده از کش و کوئریهای بهینه را در نظر بگیرید تا عملکرد سایت افت نکند.
- برای توسعه افزونهها، با ترکیب این تابع و فیلتر
user_registerمیتوانید اطلاعات کاربری را در هنگام ثبتنام مدیریت کنید.
آیا این مطلب برای شما مفید بود ؟




