ویژگی تصویر

تابع get_user_meta در وردپرس

  /  وردپرس   /  تابع get_user_meta در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

در وردپرس، داده‌های مربوط به کاربران مانند بیوگرافی، شماره تماس، تصویر پروفایل، نقش کاربری و سایر اطلاعات سفارشی در جدول 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 می‌توانید اطلاعات کاربری را در هنگام ثبت‌نام مدیریت کنید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: