توابع کاربردی وردپرس و PHP در توسعه قالب و افزونه
قبل از اینکه بریم سراغ بررسی لیست توابع کاربردی وردپرس، خیلی کوتاه اشاره کنم که اصلاً تابع توی وردپرس یعنی چی؟ تابع در واقع یه قطعهکد آمادهست که یه کار مشخص رو انجام میده؛ مثلاً عنوان یه نوشته رو میگیره، یه URL میسازه یا یه تنظیم رو از دیتابیس میخونه. وردپرس هزاران تابع از این دست داره که همشون توی مستندات رسمی توابع وردپرس قابل مشاهدهست و شما میتونید اسم هر کدوم رو که اینجا میبینید، همونجا جستجو کنید تا جزئیات کاملش رو ببینید. از طرف دیگه، بخشی از مواردی که جلوتر معرفی میکنیم مستقیم از خود زبان PHP هستن و برای همین توی مستندات رسمی توابع PHP هم میتونی جزئیات کاملتری ازشون پیدا کنی. طبیعتاً قرار نیست این مقاله همهی توابع وردپرس و PHP رو پوشش بده؛ تمرکز ما روی اونهاییه که توی فرآیند توسعهی قالب و افزونه واقعاً باهاشون سر و کار داری و خود ما هم موقع ساخت قالب آموزشی هورتاش از بیشتر همین توابع استفاده کردیم؛ از سیستم ورود و ثبتنام پیامکی و صفحات دوره بگیر تا سایدبار چسبان، ویجتهای اختصاصی المنتور و مدیریت سفارشها. هدف ما توی این توضیحات اینه که بهجای غرق شدن توی جزئیات فنی، یه دید کلی و کاربردی از هر تابع بهدست بیاری تا بدونی کجا و چه زمانی باید سراغش بری. این لیست هم قراره بهمرور بروزرسانی بشه و موارد جدیدی که توی پروژههای واقعی بهدردمون خوردن رو بهش اضافه کنیم. توی ادامه، توابع رو بهصورت دستهبندیشده جلو میبریم؛ از توابع پایه و عمومی شروع میکنیم، بعد میرسیم به مباحث امنیتی، مدیریت محتوا، کاربران، رسانه، کوئریها، هوکها و در نهایت توابع عمومی PHP که مکمل این مسیر هستن. پس بدون اینکه غرق تئوری بشیم، بریم سراغ دستهبندی اول.
توابع پایه و عمومی وردپرس
این دسته از توابع کاربردی وردپرس، پایهترین چیزهایی هستن که توی هر قالب یا افزونهای باهاشون برخورد میکنی.
defined('ABSPATH')
یه بررسی امنیتیه که معمولاً بالای هر فایل PHP توی قالب یا افزونه میبینیش. ABSPATH مسیر ریشه وردپرس رو مشخص میکنه و وقتی این خط رو میذاری، داری مطمئن میشی که اگه کسی مستقیم این فایل رو از مرورگر باز کرد، هیچ کدی اجرا نشه. یعنی فقط وقتی وردپرس خودش این فایل رو صدا بزنه که ABSPATH تعریف شده، ادامه پیدا میکنه. این کار مثل قفل کردن درِ پشتیه که فقط از داخل باز بشه.
()get_option
یکی از پرکاربردترین توابع وردپرسه که یه تنظیم ذخیرهشده توی دیتابیس رو برمیگردونه. هر چیزی که توی جدول تنظیمات وردپرس ذخیره شده باشه، مثل آدرس سایت، عنوان وبلاگ یا تنظیمات دلخواه افزونهات، با get_option میتونی بخونیش. کافیه اسم اون گزینه رو بدی تا مقدارش رو بگیری. اگه گزینه وجود نداشته باشه، میتونی یه مقدار پیشفرض هم براش مشخص کنی که همون برگردونده بشه.
()update_option
دقیقاً برعکس get_option عمل میکنه؛ یعنی یه گزینه رو توی دیتابیس ذخیره یا بهروزرسانی میکنه. وقتی میخوای تنظیمات افزونهات رو ذخیره کنی یا مقدار جدیدی برای یه گزینه مشخص بذاری، update_option رو صدا میزنی. اگه گزینه از قبل وجود داشته باشه، مقدارش عوض میشه و اگه نباشه، ساخته میشه. این تابع تقریباً توی هر صفحه تنظیمات افزونهای پیدا میشه.
()add_filter
بهت اجازه میده که مقدار یه داده رو قبل از نمایش یا استفاده نهایی تغییر بدی. فیلترها توی وردپرس دقیقاً برای همین ساخته شدن؛ یه مقدار وارد میشه، تو میتونی روش پردازش انجام بدی و بعد مقدار تغییرکرده رو برگردونی. مثلاً میخوای متن دکمه افزودن به سبد خرید رو عوض کنی یا یه چیزی به انتهای هر نوشته اضافه کنی؛ add_filter همون راهشه.
()add_action
تقریباً همهکارهی وردپرسه. با این تابع میگی که وقتی فلان اتفاق افتاد، فلان تابع رو اجرا کن. مثلاً وقتی وردپرس داره بارگذاری میشه، وقتی نوشتهای ذخیره میشه، وقتی کاربر وارد میشه و کلی اتفاق دیگه. توی قالب و افزونه، add_action راه اصلی اتصال کد خودت به چرخه اجرای وردپرسه.
()wp_head
یک هوک خیلی مهم توی قالب وردپرسه که باید دقیقاً قبل از بسته شدن تگ head توی فایل header قرار بگیره. وقتی wp_head اجرا میشه، کلی اطلاعات ضروری مثل استایلها، اسکریپتها، متاتگهای سئو و خیلی چیزای دیگه به سر سایت اضافه میشن. اگه این تابع توی قالب نباشه، بخش بزرگی از عملکرد وردپرس و افزونهها از کار میافته.
()wp_footer
wp_footer هم مثل wp_head ولی برای انتهای صفحه و درست قبل از بسته شدن تگ body. این هوک جاییه که وردپرس اسکریپتهای پایین صفحه، اطلاعات نوار مدیریت و کلی چیز دیگه که باید آخر صفحه لود بشن رو تزریق میکنه. هر قالب درست و حسابی باید wp_footer رو داشته باشه وگرنه خیلی از افزونهها درست کار نمیکنن.
()body_class
یه سری کلاس CSS به تگ body اضافه میکنه که بر اساس شرایط فعلی صفحه مثل نوع برگه، قالب فرزند، وضعیت ورود کاربر و خیلی موارد دیگه تعیین میشن. این کلاسها بهت این امکان رو میدن که توی CSS بتونی استایل دقیقی برای هر حالت بنویسی. مثلاً با body_class میتونی تشخیص بدی که کاربر توی صفحه اصلیه یا یه نوشته تکی.
()language_attributes
مشخصات زبانی و جهت متن رو به تگ html اضافه میکنه. مثلاً تعیین میکنه که زبان صفحه چیه و آیا راست به چپه یا چپ به راست. این تابع برای سئو و نمایش درست متنهای فارسی خیلی مهمه چون مرورگر و موتورهای جستجو باید بدونن صفحه با چه زبانی نوشته شده.
()get_bloginfo
اطلاعات عمومی سایت مثل عنوان، توضیح کوتاه، آدرس سایت و نسخه وردپرس رو برمیگردونه. هر وقت بخوای یه کدوم از این اطلاعات رو توی قالب یا افزونه نمایش بدی یا توی متغیری ذخیره کنی، get_bloginfo جواب رو میده. مثلاً برای نمایش نام سایت توی فوتر، همون تابعیه که لازم داری.
()bloginfo
همون اطلاعاتی که get_bloginfo برمیگردونه رو مستقیم چاپ میکنه. یعنی اگه نمیخوای مقدار رو توی متغیر نگه داری و فقط میخوای نمایشش بدی، bloginfo سریعتره. توی قالبها برای نمایش عنوان سایت یا توضیحات سایت معمولاً از همین استفاده میشه.
()home_url
آدرس صفحه اصلی سایت رو برمیگردونه. این آدرس همونیه که توی تنظیمات وردپرس بهعنوان آدرس خانه مشخص کردی. هر جا لازم داشتی کاربر رو به صفحه اصلی بفرستی یا لینکی بهش بدی، home_url بهت آدرس درست رو میده.
()admin_url
آدرس پوشه مدیریت وردپرس رو میسازه. مثلاً وقتی میخوای لینکی به صفحه تنظیمات افزونهات یا صفحه ورود بدی، admin_url با همون آدرس درست و امن بهت تحویل میده. این تابع خودش مسائل امنیتی مثل استفاده از SSL رو هم در نظر میگیره.
()wp_die
اجرای وردپرس رو متوقف میکنه و یه پیام خطا یا پیام دلخواه نشون کاربر میده. وقتی به جایی از کد رسیدی که دیگه نباید ادامه پیدا کنه، مثلاً کاربر دسترسی لازم رو نداره یا یه خطای حیاتی اتفاق افتاده، wp_die رو صدا میزنی. این تابع یه صفحه خوشفرمت با پیام خطا نمایش میده و بعد اجرا متوقف میشه.
()wp_parse_args
آرایهای از تنظیمات ورودی رو با یه آرایه پیشفرض ترکیب میکنه. یعنی هر چیزی که کاربر یا توسعهدهنده مشخص کرده باشه روی پیشفرضها قرار میگیره و بقیه چیزها همون مقدار اولیه میمونه. این تابع توی وردپرس خیلی شبیه shortcode_atts عمل میکنه، ولی عمومیتره و برای هر آرایه تنظیماتی میتونی استفادهش کنی.
()absint
یه مقدار رو به عدد صحیح مثبت تبدیل میکنه. اگه عدد منفی باشه، مثبتش میکنه و اگه اعشار یا متن داشته باشه، تمیزش میکنه. توی وردپرس وقتی با شناسهها و شمارندهها کار میکنی، absint کمک میکنه که همیشه یه عدد درست و امن داشته باشی.
()wp_unslash
بکاسلشهای اضافهای که موقع ذخیرهسازی داده توی دیتابیس اضافه شده رو حذف میکنه. وقتی داری دادهای رو که از فرم یا ورودی کاربر اومده پردازش میکنی، معمولاً باید اول wp_unslash رو صدا بزنی تا داده به حالت طبیعی خودش برگرده و بعد کارهای بعدی روش انجام بدی.
()trailingslashit
مطمئن میشه که انتهای یه مسیر یا آدرس، یه اسلش (/) وجود داره. وقتی داری آدرس پوشه یا URL میسازی و میخوای همیشه فرمت یکنواختی داشته باشه، این تابع اگه اسلش نباشه خودش اضافه میکنه. توی ساخت مسیر فایلها و پوشهها توی افزونهها خیلی بهدرد میخوره.
()wp_is_mobile
تشخیص میده که کاربر داره با موبایل یا تبلت سایت رو میبینه یا نه. این تابع بر اساس اطلاعاتی که مرورگر میفرسته، این تشخیص رو انجام میده. وقتی میخوای توی قالب یا افزونه شرطی بذاری که مثلاً فلان بخش فقط توی موبایل نمایش داده بشه، wp_is_mobile جواب رو میده.
()did_action
بهت میگه که یه هوک مشخص چند بار اجرا شده. وقتی میخوای مطمئن بشی که یه عمل خاص قبلاً انجام شده یا نه، یا اینکه ترتیب اجرای هوکها رو بررسی کنی، did_action اطلاعات دقیقی بهت میده. این تابع توی دیباگ و عیبیابی خیلی مفیده.
()status_header
یه کد وضعیت HTTP مشخص رو برای صفحه ارسال میکنه. مثلاً میتونی باهاش یه صفحه رو بهعنوان خطای 404 معرفی کنی یا کد 200 برای موفقیت بفرستی. وقتی توی قالب یا افزونه میخوای کنترل کاملی روی وضعیت HTTP صفحه داشته باشی، status_header همون ابزار لازمه.
()wp_get_referer
آدرس صفحهای که کاربر از اونجا به صفحه فعلی اومده رو برمیگردونه. یعنی میتونی بفهمی که کاربر از کدوم لینک وارد شده. وقتی میخوای بعد از یه عملیات، کاربر رو به همون صفحه قبلی برگردونی یا بدونیش از کجا اومده، wp_get_referer اطلاعات لازم رو بهت میده.
توابع امنیتی و پاکسازی دادهها در وردپرس
()esc_html_e
یه متن رو امن میکنه و همون لحظه نمایشش میده. امن کردن یعنی هر چیزی که شبیه کد HTML یا جاوااسکریپت باشه، تبدیل به متن ساده میشه و دیگه اجرا نمیشه. وقتی توی قالب یا افزونه متنی داری که میخوای مطمئن باشی کاربر نمیتونه باهاش کد مخربی تزریق کنه، esc_html_e همون چیزیه که لازم داری. فرقش با بقیه توابع esc اینه که خودش متن رو چاپ میکنه و نیازی به echo جداگانه نیست.
()__esc_html
دقیقاً مثل esc_html_e متن رو امن میکنه، ولی اون رو چاپ نمیکنه. یعنی فقط متن امنشده رو برمیگردونه تا خودت تصمیم بگیری باهاش چی کار کنی. وقتی بخوای متن امن رو اول توی یه متغیر بریزی یا بعداً ازش استفاده کنی، __esc_html انتخاب درستیه. این تابع مخصوص متنهایی که برای ترجمه هم آماده شدن خیلی کاربردیه.
()esc_attr
برای امن کردن متنی استفاده میشه که قراره داخل یه ویژگی HTML مثل value یا title قرار بگیره. این تابع جلوی بسته شدن ناخواسته تگ و تزریق کد مخرب رو میگیره. توی وردپرس وقتی داری یه مقدار رو توی input یا هر تگ HTML دیگهای میذاری، حتماً باید از esc_attr استفاده کنی.
()esc_attr_x
همون کار esc_attr رو انجام میده، ولی یه قابلیت اضافه داره؛ میتونی یه context یا زمینه براش مشخص کنی. این قابلیت برای ترجمههای دقیقتر خیلی مفیده، چون کلمهای که در دو جای مختلف معنی متفاوتی داره، با context درست ترجمه میشه. پس وقتی متنی داری که هم برای ترجمهست و هم قراره توی ویژگی HTML قرار بگیره، esc_attr_x بهترین انتخابه.
()esc_url
یه آدرس اینترنتی رو امن و استاندارد میکنه. یعنی هر کاراکتر اضافه یا خطرناکی که توی URL باشه رو حذف یا اصلاح میکنه. وقتی میخوای یه لینک رو توی href قرار بدی، حتماً باید esc_url رو روش اعمال کنی. این تابع از تزریق جاوااسکریپت از طریق آدرسها جلوگیری میکنه.
()esc_url_raw
برای وقتیه که میخوای URL رو امن کنی ولی قرار نیست توی HTML نمایش داده بشه. مثلاً وقتی میخوای آدرس رو توی دیتابیس ذخیره کنی یا برای یه ریدایرکت استفاده کنی، esc_url_raw مناسبتره. این تابع نسبت به esc_url پردازش سنگینتری انجام میده و برای ذخیرهسازی بهتره.
()esc_js
متن رو برای قرار گرفتن داخل کد جاوااسکریپت امن میکنه. وقتی میخوای یه متغیر PHP رو مستقیم داخل یه بلوک جاوااسکریپت بذاری، باید حتماً با esc_js تمیزش کنی تا کاربر نتونه کد مخرب تزریق کنه. این تابع کاراکترهای خاص مثل نقل قول و بکاسلش رو بیخطر میکنه.
()esc_textarea
مخصوص امن کردن متنی هست که قراره داخل تگ textarea نمایش داده بشه. این تابع مطمئن میشه که کاربر نمیتونه با بستن تگ textarea، کد HTML یا اسکریپت خودش رو وارد صفحه کنه. وقتی داری مقدار ذخیرهشده یه فرم متنی رو دوباره توی textarea نشون میدی، esc_textarea لازمه.
()sanitize_text_field
یه متن ورودی از کاربر رو کاملاً تمیز میکنه؛ یعنی همه تگها، اسکریپتها و فاصلههای اضافه رو حذف میکنه و فقط متن ساده باقی میمونه. وقتی داری داده فرم رو قبل از ذخیره توی دیتابیس پردازش میکنی، sanitize_text_field یکی از اصلیترین توابعیه که باید به کار ببری.
()sanitize_user
نام کاربری رو پاکسازی میکنه و فقط کاراکترهای مجاز رو نگه میداره. یعنی اگه کاربر توی نام کاربری خودش کاراکترهای عجیب یا غیرمجاز وارد کرده باشه، این تابع حذفشون میکنه. وقتی فرم ثبتنام یا ورود سفارشی میسازی، sanitize_user بهت کمک میکنه نام کاربری استاندارد بمونه.
()sanitize_hex_color
یه مقدار رو بررسی میکنه و اگه یه کد رنگ HEX معتبر مثل #ff0000 باشه، همون رو برمیگردونه. اگه مقدار چیز دیگهای باشه، null برمیگردونه. وقتی توی تنظیمات قالب یا افزونه از کاربر یه رنگ میگیری، sanitize_hex_color تضمین میکنه که فقط کد رنگ درست ذخیره بشه.
()tag_escape
نام تگهای HTML رو امن میکنه و جلوی تزریق کد مخرب از طریق نام تگ رو میگیره. این تابع برای وقتیه که داری با نام تگها بهصورت داینامیک کار میکنی. توی وردپرس وقتی خروجی تگهای HTML رو از ورودی کاربر میسازی، tag_escape امنیت رو حفظ میکنه.
()wp_kses_post
بهت اجازه میده که HTML مجاز توی محتوا حفظ بشه، ولی همه تگها و اسکریپتهای خطرناک حذف بشن. یعنی مثل یه فیلتر هوشمند عمل میکنه که فقط تگهای امن مثل پاراگراف، لینک و تصویر رو نگه میداره. وقتی ورودی کاربر قراره HTML داشته باشه ولی نمیخوای هر کدی اجرا بشه، wp_kses_post بهترین انتخابه.
()wp_verify_nonce
یه کد امنیتی به نام nonce رو بررسی میکنه تا مطمئن بشه درخواستی که اومده واقعاً از طرف کاربر خودشه و جعلی نیست. وقتی فرمی ارسال میشه یا عملیات حساسی انجام میشه، باید قبل از پردازش با wp_verify_nonce اعتبار درخواست رو چک کنی. این کار جلوی حملات CSRF رو میگیره.
()wp_create_nonce
یه کد امنیتی یکتا میسازه که بعداً میتونی با wp_verify_nonce اعتبارش رو بسنجی. این کد معمولاً یه بار ساخته میشه و توی فرم یا لینک قرار میگیره. هر وقت یه عملیات حساس داری که نباید از بیرون جعل بشه، wp_create_nonce اولین قدم برای محافظته.
()check_ajax_referer
مخصوص درخواستهای AJAX هست و nonce ارسالشده توی درخواست رو بررسی میکنه. وقتی یه درخواست AJAX به سرور میاد، قبل از انجام هر کاری باید با check_ajax_referer مطمئن بشی که درخواست معتبره. این تابع از اجرای درخواستهای جعلی جلوگیری میکنه.
()is_wp_error
بررسی میکنه که خروجی یه تابع، یه شیء خطای وردپرسه یا نه. توی وردپرس خیلی از توابع وقتی چیزی اشتباه پیش میره، بهجای مقدار عادی، یه شیء خطا برمیگردونن. با is_wp_error میتونی قبل از استفاده از خروجی، مطمئن بشی که خطایی رخ نداده. این تابع توی توسعه حرفهای وردپرس واقعاً ضروریه.
توابع دریافت اطلاعات و مدیریت تنظیمات سایت
()register_setting
به وردپرس میگه که یه گزینه مشخص قراره توی سیستم تنظیمات ذخیره بشه و موقع ذخیرهسازی باید چه قوانین پاکسازی روش اعمال بشه. این تابع بخشی از API رسمی تنظیماته و معمولاً قبل از ساخت فرمهای تنظیمات صداش میزنی. وقتی register_setting رو درست ثبت کنی، وردپرس خودش خیلی از مسائل امنیتی ذخیرهسازی رو مدیریت میکنه.
()settings_errors
پیامهایی که موقع ذخیره تنظیمات به وجود اومده رو نشون میده؛ هم پیام خطا و هم پیام موفقیت. وقتی کاربر فرم تنظیمات رو ذخیره میکنه و یه مشکلی پیش میاد، وردپرس اون رو نگه میداره. بعد توی صفحه تنظیمات با settings_errors این پیامها رو به کاربر نمایش میدی تا بفهمه چه اتفاقی افتاده.
()add_settings_section
یه بخش جدید توی صفحه تنظیمات میسازه. یعنی میتونی تنظیمات افزونهات رو به چند دسته منطقی تقسیم کنی و هر کدوم رو توی یه بخش جدا بذاری. این تابع یه شناسه و یه عنوان میگیره و بعدش میتونی فیلدهای مربوط به همون بخش رو بهش اضافه کنی.
()add_settings_field
یه فیلد ورودی مشخص رو به یکی از بخشهای تنظیمات اضافه میکنه. مثلاً یه input متنی، یه checkbox یا یه select. با add_settings_field مشخص میکنی که این فیلد توی کدوم بخش بیاد و چه تابعی قراره اون رو نمایش بده.
()do_settings_sections
همه بخشها و فیلدهایی که برای یه صفحه تنظیمات ثبت کردی رو به ترتیب نمایش میده. این تابع رو معمولاً داخل فرم تنظیمات صدا میزنی و خودش کل ساختار رو میچینه. در واقع do_settings_sections جاییه که همه چیزهایی که با توابع قبلی ساختی، یکجا چاپ میشن.
()settings_fields
فیلدهای مخفی امنیتی و شناسه گزینهها رو به فرم تنظیمات اضافه میکنه. این فیلدها شامل nonce و اسم گزینههایی هستن که قراره ذخیره بشن. بدون settings_fields فرم تنظیماتت عملاً کار نمیکنه و وردپرس نمیتونه دادهها رو درست پردازش کنه.
()submit_button
دکمه ذخیرهسازی استاندارد وردپرس رو میسازه. بهجای این که خودت تگ button یا input بنویسی، این تابع یه دکمه با استایل و ساختار درست وردپرس بهت میده. توی فرمهای تنظیمات، submit_button کار رو سریعتر و تمیزتر میکنه.
()get_file_data
اطلاعات هدر یه فایل PHP یا CSS رو میخونه. توی وردپرس قالبها و افزونهها یه سری مشخصات مثل نام، نسخه، نویسنده و توضیحات رو بالای فایل اصلیشون مینویسن. با get_file_data میتونی این مشخصات رو بخونی و توی بخش مدیریت نمایش بدی.
()get_template_directory
مسیر فیزیکی پوشه قالب فعال روی سرور رو برمیگردونه. یعنی آدرس واقعی توی سیستم فایل هاست که قالب توش قرار داره. وقتی میخوای به فایلی داخل قالب دسترسی مستقیم داشته باشی، get_template_directory نقطه شروع درستیه.
()get_template_directory_uri
آدرس اینترنتی پوشه قالب فعال رو برمیگردونه. یعنی همون آدرسی که مرورگر میتونه باهاش فایلهای قالب مثل CSS و تصاویر رو لود کنه. وقتی میخوای یه فایل استاتیک از قالب رو توی HTML یا CSS آدرس بدی، get_template_directory_uri لازمه.
()get_theme_file_path
مسیر فیزیکی یه فایل مشخص داخل قالب رو برمیگردونه. فرقش با get_template_directory اینه که مستقیم نام فایل رو میدی و مسیر کامل همون فایل رو تحویل میگیری. این تابع برای وقتی عالیه که میخوای یه فایل خاص از قالب رو بخونی یا include کنی.
()get_theme_file_uri
آدرس اینترنتی یه فایل مشخص داخل قالب رو برمیگردونه. مثلاً نام فایل CSS یا تصویر رو میدی و آدرس کاملش برای مرورگر ساخته میشه. وقتی توی قالب میخوای یه فایل خاص رو لود کنی، get_theme_file_uri کار رو ساده میکنه.
()get_parent_theme_file_path
مسیر فیزیکی یه فایل داخل قالب والد رو برمیگردونه. وقتی با قالب فرزند کار میکنی و میخوای مستقیماً به فایلی از قالب اصلی دسترسی داشته باشی، این تابع بهت کمک میکنه. یعنی بدون این که مسیر رو دستی بسازی، get_parent_theme_file_path آدرس درست رو میده.
()wp_get_theme
یه شیء از قالب فعال یا هر قالب مشخصی که بخوای برمیگردونه که کلی اطلاعات مثل نام، نسخه، نویسنده و توضیحات توشه. وقتی میخوای اطلاعات قالب رو توی صفحه مدیریت یا تنظیمات نمایش بدی، wp_get_theme همه چیز رو یهجا بهت میده.
توابع مدیریت محتوا و نوشتهها
()wp_insert_post
یه نوشته جدید توی دیتابیس وردپرس میسازه. یعنی بدون این که وارد پیشخوان بشی، میتونی از طریق کد یه نوشته، برگه یا هر نوع محتوای سفارشی اضافه کنی. این تابع یه آرایه از مشخصات مثل عنوان، محتوا، وضعیت انتشار و نوع نوشته میگیره و بعد از ذخیره، شناسه نوشته جدید رو برمیگردونه. توی افزونهها وقتی میخوای بهصورت خودکار محتوا بسازی، wp_insert_post اصلیترین راهه.
()wp_update_post
دقیقاً برعکس wp_insert_post عمل میکنه. یعنی یه نوشته موجود رو میگیری و مشخصات جدید رو جایگزین قبلی میکنی. کافیه شناسه نوشته و فیلدهایی که میخوای تغییر بدن رو توی آرایه بدی. وقتی افزونهای داری که محتوای تولیدشده رو بعداً ویرایش میکنه، wp_update_post لازمه.
()get_post
یه نوشته مشخص رو با شناسهش از دیتابیس میاره و بهصورت یه شیء کامل برمیگردونه. این شیء شامل همه اطلاعات مثل عنوان، محتوا، نویسنده، تاریخ و وضعیت نوشتهست. وقتی میخوای توی کد به دادههای یه نوشته خاص دسترسی داشته باشی، get_post اولین تابعیه که باید صدا بزنی.
()get_post_field
فقط یه فیلد مشخص از یه نوشته رو برمیگردونه. مثلاً میخوای فقط عنوان نوشته رو بگیری یا فقط وضعیت انتشارش رو بدونی. بهجای این که کل شیء رو با get_post بگیری و بعد به فیلد دسترسی پیدا کنی، get_post_field مستقیم همون یه مقدار رو بهت میده.
()get_pages
لیستی از برگههای وردپرس رو برمیگردونه. برگهها همون نوشتههای ثابت مثل صفحه تماس با ما یا درباره ما هستن. وقتی میخوای توی قالب یا افزونه فهرستی از برگهها رو نمایش بدی، get_pages با کلی گزینه برای فیلتر کردن و مرتبسازی بهت کمک میکنه.
()get_children
نوشتههایی که فرزند یه نوشته دیگه هستن رو برمیگردونه. معمولاً برای گرفتن پیوستهای یه نوشته مثل تصاویر گالری استفاده میشه. یعنی میگی که فرزندان فلان نوشته رو بده و وردپرس لیستشون رو برمیگردونه. توی مدیریت رسانه و گالریها get_children خیلی کاربردیه.
()wp_count_posts
تعداد نوشتههای هر وضعیت مثل منتشرشده، پیشنویس و زباله رو میشماره. خروجیش یه شیء هست که میتونی تعداد هر وضعیت رو جداگانه بگیری. وقتی توی پیشخوان یا افزونه میخوای آماری از تعداد نوشتهها نشون بدی، wp_count_posts جواب رو سریع میده.
()post_type_exists
بررسی میکنه که یه نوع نوشته مشخص توی وردپرس ثبت شده یا نه. مثلاً میخوای مطمئن بشی که نوع محتوای “محصول” وجود داره یا نه. وقتی افزونهات قراره با یه نوع نوشته خاص کار کنه، اول باید با post_type_exists چک کنی که اون نوع نوشته در دسترسه.
()register_post_type
بهت اجازه میده یه نوع نوشته سفارشی جدید بسازی. مثلاً میخوای یه نوع محتوا به اسم “نمونه کار” یا “رویداد” داشته باشی که کاملاً از نوشتهها و برگهها جدا باشه. با register_post_type مشخص میکنی که این نوع نوشته چه قابلیتهایی داشته باشه و چطور نمایش داده بشه.
()register_post_status
یه وضعیت انتشار جدید برای نوشتهها ثبت میکنه. وردپرس بهصورت پیشفرض وضعیتهایی مثل منتشرشده و پیشنویس داره، ولی گاهی لازمه وضعیت سفارشی مثل “در انتظار بررسی مالی” بسازی. register_post_status این امکان رو بهت میده.
()add_post_type_support
قابلیتهای جدید به یه نوع نوشته اضافه میکنه. مثلاً میتونی برای نوع نوشته سفارشیات قابلیت تصویر شاخص، خلاصه یا فرمت نوشته رو فعال کنی. وقتی register_post_type رو صدا زدی و بعد دیدی یه قابلیت کمه، add_post_type_support راه حل سریعیه.
()wp_is_post_revision
بررسی میکنه که یه نوشته مشخص، یه نسخه بازبینی هست یا نه. وردپرس از هر نوشته موقع ویرایش نسخههای پشتیبان میگیره و این تابع اونها رو از نوشته اصلی تشخیص میده. وقتی داری روی هوکهای ذخیرهسازی کار میکنی، wp_is_post_revision جلوی پردازش اشتباه نسخههای پشتیبان رو میگیره.
()post_password_required
چک میکنه که برای دیدن یه نوشته، رمز عبور لازمه یا نه. اگه نوشتهای رمز داشته باشه و کاربر هنوز رمز رو وارد نکرده باشه، این تابع true برمیگردونه. توی قالب وقتی میخوای محتوا رو نمایش بدی، اول باید با post_password_required مطمئن بشی که کاربر اجازه دیدن داره.
()get_the_password_form
فرم ورود رمز عبور برای نوشتههای محافظتشده رو برمیگردونه. وقتی نوشتهای رمز داره و کاربر هنوز واردش نکرده، باید این فرم بهش نمایش داده بشه. توی قالب میتونی با get_the_password_form فرم استاندارد وردپرس رو نشون بدی.
()get_the_ID
شناسه نوشته جاری توی حلقه وردپرس رو برمیگردونه. هر جا داخل حلقه باشی و نیاز داشته باشی بدون که الان کدوم نوشته در حال پردازشه، get_the_ID جواب رو میده. این تابع برای استفاده توی کد و متغیرهاست و چیزی چاپ نمیکنه.
()the_ID
همون شناسه نوشته جاری رو مستقیم چاپ میکنه. وقتی توی قالب و حلقه میخوای شناسه رو توی HTML یا ویژگیها نشون بدی، the_ID سریع و راحته. این تابع عملاً مثل get_the_ID هست ولی با echo.
()get_permalink
لینک مستقیم یه نوشته یا برگه مشخص رو برمیگردونه. وقتی میخوای کاربر رو به نوشتهای هدایت کنی یا لینکش رو توی منو بذاری، get_permalink آدرس درست رو میده. این تابع میتونه بدون آرگومان هم صدا زده بشه تا لینک نوشته جاری رو بده.
()get_the_permalink
همون کار get_permalink رو انجام میده و لینک نوشته جاری توی حلقه رو برمیگردونه. این تابع مخصوص استفاده داخل حلقهست و خیلی تمیزتر از اینه که بخوای شناسه رو دستی به get_permalink بدی. وقتی توی لیست نوشتهها هستی، get_the_permalink انتخاب درستیه.
()wp_get_shortlink
یه لینک کوتاه برای نوشته برمیگردونه. این لینک کوتاه معمولاً با ساختار ?p=شناسه ساخته میشه و برای جاهایی که لینک بلند مشکل ایجاد میکنه کاربردیه. وقتی میخوای لینک ساده و کوتاهی از یه نوشته داشته باشی، wp_get_shortlink بهت میده.
()get_search_query
عبارتی که کاربر توی فرم جستجو وارد کرده رو برمیگردونه. یعنی وقتی کاربر توی سایت دنبال چیزی میگرده، این تابع همون متن جستجوش رو بهت میده. توی صفحه نتایج جستجو معمولاً با get_search_query به کاربر نشون میدی که دنبال چی بوده.
()the_title
عنوان نوشته جاری رو چاپ میکنه. این تابع هم داخل حلقه و هم بیرون از اون کار میکنه و میتونه قبل و بعد از عنوان هم متن اضافه کنه. توی قالبها برای نمایش عنوان هر نوشته توی لیست یا صفحه تکی، the_title همیشه استفاده میشه.
()the_content
محتوای کامل نوشته جاری رو چاپ میکنه. این تابع کلی پردازش روش انجام میده؛ مثل اجرای شورتکدها، تبدیل اینتر به پاراگراف و اعمال فیلترها. توی صفحه تکی نوشته، the_content دقیقاً همون متنی که توی ادیتور نوشتی رو به شکل درست نمایش میده.
()post_class
یه سری کلاس CSS برای تگ مقاله هر نوشته تولید میکنه. این کلاسها بر اساس شناسه، نوع نوشته، وضعیت چسبان و فرمت نوشته ساخته میشن. با post_class میتونی توی CSS استایل دقیقی برای هر نوع نوشته بنویسی.
()get_the_date
تاریخ انتشار نوشته جاری رو برمیگردونه. میتونی فرمت تاریخ رو هم مشخص کنی. وقتی میخوای تاریخ انتشار رو توی متغیر ذخیره کنی یا پردازش کنی، get_the_date همون تابعیه که لازم داری.
()get_the_modified_date
تاریخ آخرین ویرایش نوشته رو برمیگردونه. این تابع وقتی مهمه که بخوای به کاربر نشون بدی یه نوشته قبلاً ویرایش شده و تاریخ بهروزرسانی رو هم ببینه. توی قالبها کنار تاریخ انتشار، get_the_modified_date اطلاعات کاملتری به کاربر میده.
()the_author
نام نویسنده نوشته جاری رو چاپ میکنه. وقتی میخوای توی لیست نوشتهها یا صفحه تکی نشون بدی که این نوشته رو کی نوشته، the_author سریع و راحته. این تابع نام نمایشی نویسنده رو میده.
()get_the_author_meta
اطلاعات بیشتری از نویسنده مثل ایمیل، بیوگرافی یا لینک سایتش رو برمیگردونه. وقتی میخوای پروفایل کاملتری از نویسنده نشون بدی، get_the_author_meta با مشخص کردن فیلد موردنظر جواب رو میده.
()get_author_posts_url
لینک صفحه آرشیو نوشتههای یه نویسنده مشخص رو برمیگردونه. یعنی وقتی کاربر روی اسم نویسنده کلیک میکنه، به صفحهای میره که همه نوشتههاش لیست شده. با get_author_posts_url این لینک رو برای هر نویسنده میتونی بسازی.
()is_singular
بررسی میکنه که کاربر الان توی یه صفحه تکی از یه نوشته، برگه یا نوع محتوای سفارشیه یا نه. یعنی آیا یه محتوای واحد داره نمایش داده میشه یا نه. توی قالب وقتی میخوای شرط بذاری که فلان بخش فقط توی صفحات تکی بیاد، is_singular دقیقاً همین رو چک میکنه.
توابع مدیریت متادیتا و فیلدهای سفارشی
()get_post_meta
مقدار یه فیلد سفارشی که برای یه نوشته ذخیره شده رو برمیگردونه. مثلاً اگه برای نوشتههات یه فیلد به اسم “قیمت” داری، با get_post_meta میتونی مقدارش رو بخونی. این تابع سه پارامتر میگیره؛ شناسه نوشته، اسم فیلد و یه مقدار true یا false که مشخص میکنه خروجی آرایه باشه یا تکمقدار. توی قالبها و افزونهها، get_post_meta اصلیترین راه دسترسی به فیلدهای سفارشیه.
()add_post_meta
add_post_meta یه فیلد سفارشی جدید به یه نوشته اضافه میکنه. یعنی میتونی یه کلید و یه مقدار براش مشخص کنی و توی دیتابیس ذخیره بشه. نکته مهم اینه که add_post_meta فقط وقتی کار میکنه که قبلاً فیلدی با همون اسم وجود نداشته باشه. وقتی میخوای یه اطلاعات کاملاً جدید به نوشته اضافه کنی، این تابع انتخابه.
()update_post_meta
مقدار یه فیلد سفارشی موجود رو بهروزرسانی میکنه. یعنی اگه فیلد از قبل باشه، مقدارش عوض میشه و اگه نباشه، همون لحظه ساخته میشه. این تابع از add_post_meta کاربردیتره، چون لازم نیست چک کنی که فیلد وجود داره یا نه. توی ذخیرهسازی تنظیمات هر نوشته، update_post_meta پرکاربردترین تابعه.
()delete_post_meta
یه فیلد سفارشی مشخص رو از روی نوشته حذف میکنه. یعنی دیگه اون کلید و مقدارش توی دیتابیس برای اون نوشته وجود نخواهد داشت. وقتی میخوای یه قابلیت یا اطلاعات اضافه رو از نوشته برداری، delete_post_meta تمیز و سریع انجامش میده.
توابع مدیریت کاربران و احراز هویت
()get_userdata
تمام اطلاعات یه کاربر مشخص رو بر اساس شناسهش از دیتابیس میاره و بهصورت یه شیء کامل برمیگردونه. این شیء شامل همه چیزه؛ از نام کاربری و ایمیل گرفته تا تاریخ ثبتنام و سطح دسترسی. وقتی میخوای توی کد به مشخصات کامل یه کاربر دسترسی داشته باشی، get_userdata اولین تابعیه که باید صدا بزنی.
()get_user_by
یه کاربر رو نه با شناسه، بلکه با یه فیلد دیگه مثل ایمیل، نام کاربری یا اسلاگ پیدا میکنه. مثلاً میخوای بدونی فلان ایمیل توی سایت ثبت شده یا نه؛ با get_user_by مشخص میکنی که دنبال چی بگرده و وردپرس کاربر رو برمیگردونه. این تابع وقتی کاربردیه که شناسه کاربر رو نداری ولی یه مشخصه دیگه ازش داری.
()get_current_user_id
شناسه کاربری که الان وارد سایت شده رو برمیگردونه. اگه هیچ کاربری وارد نشده باشه، مقدار صفر برمیگردونه. توی قالب و افزونه وقتی میخوای عملیات رو بر اساس کاربر فعلی انجام بدی، اول باید با get_current_user_id بفهمی که کی وارد شده.
()wp_get_current_user
یه شیء کامل از کاربر فعلی که وارد سایت شده رو برمیگردونه. یعنی علاوه بر شناسه، همه مشخصاتش مثل نام، ایمیل و نقش رو هم داری. وقتی میخوای جزئیات بیشتری از کاربر لاگینشده بگیری، wp_get_current_user اطلاعات کاملتری نسبت به get_current_user_id بهت میده.
()wp_set_current_user
به وردپرس میگه که کاربر جاری رو بهعنوان فلان شناسه در نظر بگیره. این تابع معمولاً موقع پردازش ورود کاربر یا وقتی میخوای بهصورت برنامهای کاربر رو تغییر بدی استفاده میشه. توی توسعه حرفهای، wp_set_current_user کمک میکنه که فرآیند ورود رو کنترل کنی.
()get_user_meta
مقدار یه فیلد سفارشی که برای یه کاربر ذخیره شده رو برمیگردونه. مثلاً اگه برای کاربرات فیلد شماره تماس یا بیوگرافی اضافه کردی، با get_user_meta میتونی مقدارش رو بخونی. این تابع شبیه get_post_meta ولی برای کاربرانه.
()username_exists
بررسی میکنه که یه نام کاربری مشخص توی سایت وجود داره یا نه. وقتی فرم ثبتنام سفارشی داری، باید قبل از ساخت کاربر جدید با username_exists مطمئن بشی که این نام قبلاً گرفته نشده. این تابع شناسه کاربر موجود رو برمیگردونه یا اگه نباشه null میده.
()wp_insert_user
یه کاربر جدید توی وردپرس میسازه. یعنی میتونی با یه آرایه شامل نام کاربری، ایمیل، رمز و نقش، کاربر جدید بسازی. این تابع بعد از ساخت، شناسه کاربر جدید رو برمیگردونه. وقتی فرم ثبتنام سفارشی داری یا میخوای کاربر بهصورت خودکار بسازی، wp_insert_user راه اصلیه.
()wp_generate_password
یه رمز عبور تصادفی و امن تولید میکنه. میتونی طولش رو مشخص کنی و اگه بخوای کاراکترهای خاص هم توش باشه یا نه. وقتی میخوای برای کاربر جدید رمز بسازی یا رمز فراموششده رو عوض کنی، wp_generate_password امنیت رو تضمین میکنه.
()wp_set_auth_cookie
کوکیهای ورود کاربر رو توی مرورگرش میسازه. یعنی بعد از این که کاربر رو احراز هویت کردی، با wp_set_auth_cookie مرورگرش رو وارد حساب کاربری میکنی. این تابع بخشی از فرآیند ورود خودکار یا ورود از طریق کد سفارشیه.
()wp_clear_auth_cookie
کوکیهای ورود کاربر رو از مرورگرش پاک میکنه. یعنی عملاً کاربر رو از حسابش خارج میکنه. وقتی دکمه خروج سفارشی میسازی یا میخوای کاربر رو بهصورت برنامهای خارج کنی، wp_clear_auth_cookie این کار رو انجام میده.
()is_user_logged_in
بررسی میکنه که کاربر فعلی وارد سایت شده یا نه. خروجیش فقط true یا false هست. توی قالب وقتی میخوای بخشی از محتوا رو فقط به کاربران واردشده نشون بدی، is_user_logged_in سادهترین شرطه.
()translate_user_role
نام نمایشی یه نقش کاربری رو به زبان جاری سایت ترجمه میکنه. مثلاً نقش “Administrator” توی فارسی میشه “مدیر”. وقتی میخوای نام نقش رو به کاربر نشون بدی، translate_user_role کمک میکنه که به زبان خودش ببینه.
()get_avatar
تصویر پروفایل کاربر رو برمیگردونه. این تابع بر اساس ایمیل کاربر، تصویر گراواتار یا تصویر پروفایلش رو میگیره و میتونی سایزش رو هم مشخص کنی. وقتی میخوای کنار کامنتها یا پروفایل، عکس کاربر رو نشون بدی، get_avatar همون تابعیه که لازم داری.
()wp_lostpassword_url
لینک صفحه بازیابی رمز عبور وردپرس رو برمیگردونه. وقتی میخوای توی فرم ورود سفارشی یا قالب، لینکی برای “فراموشی رمز” بذاری، wp_lostpassword_url آدرس درست رو بهت میده. این تابع میتونه یه آدرس بازگشت هم بگیره که بعد از بازیابی، کاربر به همون صفحه برگرده.
توابع مدیریت دیدگاهها و بخش نظرات
()get_comment
یه دیدگاه مشخص رو با شناسهش از دیتابیس میاره و بهصورت یه شیء کامل برمیگردونه. این شیء شامل متن دیدگاه، نام نویسنده، ایمیل، تاریخ و وضعیت تاییدشه. وقتی میخوای توی کد به اطلاعات یه دیدگاه خاص دسترسی داشته باشی، get_comment اولین تابعیه که صدا میزنی.
()get_comment_meta
مقدار یه فیلد سفارشی که برای یه دیدگاه ذخیره شده رو برمیگردونه. مثلاً اگه افزونهای داری که برای هر دیدگاه یه امتیاز یا یه مقدار اضافه ذخیره میکنه، با get_comment_meta میتونی همون مقدار رو بخونی. این تابع مثل get_post_meta ولی برای دیدگاههاست.
()get_comments_number
تعداد دیدگاههای تاییدشده یه نوشته رو برمیگردونه. این تابع معمولاً کنار عنوان نوشتهها استفاده میشه تا کاربر ببینه چند نفر نظر دادن. اگه بخوای مقدار رو توی متغیر ذخیره کنی یا شرط روش بذاری، get_comments_number مناسبتر از نسخه چاپیشه.
()have_comments
بررسی میکنه که نوشته جاری اصلاً دیدگاهی داره یا نه. این تابع معمولاً توی فایل کامنت قالب قبل از نمایش لیست نظرات صدا زده میشه. با have_comments مطمئن میشی که اگه هیچ نظری نباشه، بخش نظرات الکی نمایش داده نشه.
()comments_open
بررسی میکنه که آیا برای نوشته جاری امکان ثبت دیدگاه جدید بازه یا نه. این وضعیت از تنظیمات هر نوشته و تنظیمات کلی وردپرس میاد. وقتی میخوای فرم دیدگاه رو فقط وقتی نشون بدی که واقعاً بشه نظر گذاشت، comments_open شرط درستیه.
()comment_form
فرم استاندارد ثبت دیدگاه وردپرس رو نمایش میده. یعنی لازم نیست خودت فرم رو از صفر بسازی؛ این تابع فیلدهای نام، ایمیل، وبسایت و متن نظر رو با ساختار درست وردپرس چاپ میکنه. توی قالب وقتی میخوای بخش نظرات رو فعال کنی، comment_form سادهترین راهه.
()wp_list_comments
لیست دیدگاههای یه نوشته رو با ساختار و استایل استاندارد وردپرس نمایش میده. این تابع تشخیص میده که کدوم نظر پاسخ کدوم نظره و چیدمان درختی درست رو میسازه. توی فایل کامنت قالب، wp_list_comments جایگزین حلقه دستی نظراته و کار رو خیلی راحت میکنه.
()comment_author
نام نویسنده دیدگاه جاری رو چاپ میکنه. این تابع داخل حلقه نمایش نظرات استفاده میشه و اسم کسی که نظر گذاشته رو نشون میده. وقتی داری هر دیدگاه رو جداگانه نشون میدی، comment_author دقیقاً همون نامیه که لازم داری.
()comment_reply_link
لینک “پاسخ به این دیدگاه” رو نمایش میده. این لینک به کاربر اجازه میده که به یه نظر مشخص پاسخ بده و وردپرس بهصورت خودکار ارتباط والد و فرزند رو مدیریت میکنه. توی لیست نظرات، comment_reply_link برای ایجاد بحثهای دنبالهدار ضروریه.
()comments_template
فایل قالب مربوط به نظرات رو بارگذاری میکنه. یعنی وقتی توی قالب میخوای کل بخش نظرات شامل لیست و فرم رو نشون بدی، کافیه comments_template رو صدا بزنی. این تابع خودش فایل comments.php رو پیدا میکنه و همه چیز رو نمایش میده.
()the_comments_pagination
صفحهبندی برای دیدگاهها رو نمایش میده. وقتی یه نوشته کلی نظر داره و وردپرس اونها رو به چند صفحه تقسیم میکنه، the_comments_pagination لینکهای صفحه قبل و بعد رو میسازه. این تابع باعث میشه کاربر بتونه بین صفحات نظرات جابهجا بشه.
توابع مدیریت ترمها، دستهبندیها و برچسبها
()get_terms
لیستی از ترمهای یه طبقهبندی مشخص مثل دستهبندی یا برچسب رو برمیگردونه. میتونی فیلترهای مختلفی مثل ترتیب، تعداد و وضعیت خالی بودنشون رو مشخص کنی. وقتی میخوای توی قالب یا افزونه فهرستی از دستهها یا برچسبها رو نمایش بدی، get_terms اصلیترین تابعیه که بهش نیاز داری.
()term_description
توضیحات یه ترم مشخص مثل یه دسته یا برچسب رو برمیگردونه. یعنی اگه برای دستههات یه متن توضیح نوشتی، با term_description میتونی همون متن رو بگیری و نمایش بدی. این تابع معمولاً بالای آرشیو دستهها برای معرفی اون بخش استفاده میشه.
()get_the_category
دستههایی که یه نوشته مشخص بهشون متصله رو برمیگردونه. خروجیش یه آرایه از اشیای دستهست که شامل نام، شناسه و لینک هر دسته میشه. وقتی میخوای توی قالب نشون بدی که یه نوشته توی چه دستههایی قرار داره، get_the_category دقیقاً همین کار رو میکنه.
()get_term_link
لینک صفحه آرشیو یه ترم مشخص مثل یه دسته یا برچسب رو برمیگردونه. یعنی میتونی شناسه یا شیء ترم رو بدی و آدرس صفحهای که همه نوشتههای اون دسته رو نشون میده بگیری. وقتی میخوای کاربر رو به آرشیو یه دسته بفرستی، get_term_link لازمه.
()single_cat_title
عنوان دستهای که کاربر الان توی صفحه آرشیوش هست رو چاپ میکنه. یعنی وقتی کاربر وارد صفحه یه دسته خاص شده، single_cat_title اسم همون دسته رو نشون میده. توی قالب صفحه آرشیو دستهها، این تابع برای نمایش عنوان صفحه خیلی کاربردیه.
()get_tag_link
لینک صفحه آرشیو یه برچسب مشخص رو برمیگردونه. یعنی با دادن شناسه برچسب، آدرس صفحهای که همه نوشتههای اون برچسب رو داره میگیری. وقتی میخوای توی قالب لینک برچسبها رو نشون بدی، get_tag_link دقیقاً همون چیزیه که لازم داری.
()the_archive_description
توضیحات صفحه آرشیو جاری مثل دسته، برچسب یا نویسنده رو نمایش میده. یعنی اگه برای دستهای توضیح نوشتی، the_archive_description همون متن رو توی صفحه آرشیو چاپ میکنه. این تابع برای معرفی بخشهای آرشیو به کاربر خیلی مفیده.
()get_the_archive_description
همون توضیحات آرشیو جاری رو برمیگردونه ولی چیزی چاپ نمیکنه. وقتی میخوای متن توضیحات رو توی متغیر ذخیره کنی یا قبل از نمایش پردازش کنی، get_the_archive_description مناسبتره. این تابع انعطاف بیشتری نسبت به نسخه چاپیش بهت میده.
()wp_get_post_categories
شناسههای دستههایی که یه نوشته مشخص بهشون متصله رو برمیگردونه. خروجیش یه آرایه ساده از عددهای شناسهست. وقتی فقط به شناسه دستهها نیاز داری و نمیخوای اشیای کامل رو بگیری، wp_get_post_categories سریعتر و سبکتره.
توابع مدیریت رسانه، پیوستها و فایلهای آپلودی
()wp_get_attachment_image
تگ کامل img برای یه تصویر پیوست مشخص رو برمیگردونه. یعنی شناسه پیوست رو میدی و خودش تگ تصویر با اندازه مشخص و ویژگیهای alt و class درست رو میسازه. وقتی میخوای تصویری از کتابخانه رسانه رو توی قالب یا افزونه نشون بدی، wp_get_attachment_image تمیزترین راهه.
()wp_get_attachment_image_src
فقط آدرس تصویر در اندازه مشخص و ابعادش رو برمیگردونه، نه تگ کامل img. خروجیش یه آرایهست شامل آدرس، عرض و ارتفاع تصویر. وقتی میخوای آدرس تصویر رو توی CSS یا جاوااسکریپت استفاده کنی، wp_get_attachment_image_src دقیقاً همون چیزیه که لازم داری.
()wp_get_attachment_url
آدرس مستقیم فایل پیوست رو برمیگردونه. یعنی اگه یه تصویر یا فایل توی کتابخانه رسانه آپلود کردی، با دادن شناسهش میتونی لینک مستقیم دانلود یا نمایشش رو بگیری. این تابع برای ساخت لینک دانلود فایلهای غیرتصویری هم عالیه.
()wp_get_attachment_image_url
آدرس تصویر پیوست رو در اندازه مشخص برمیگردونه. یعنی میتونی مثلاً نسخه متوسط یا بندانگشتی تصویر رو بخوای و آدرس دقیقش رو بگیری. وقتی فقط لینک تصویر در ابعاد خاص لازم داری، wp_get_attachment_image_url دقیق همون کار رو میکنه.
()attachment_url_to_postid
از روی آدرس یه فایل رسانهای، شناسه پیوستش رو پیدا میکنه. یعنی اگه فقط لینک تصویر رو داری و میخوای بدونی که توی کتابخانه رسانه کدوم پیوسته، این تابع جواب رو میده. وقتی با URLهای رسانه سروکار داری و نیاز به شناسهشون داری، attachment_url_to_postid خیلی کاربردیه.
()wp_enqueue_media
کتابخانه رسانه وردپرس رو برای استفاده توی صفحات مدیریت فعال میکنه. یعنی اگه افزونهای داری که قراره کاربر از طریقش تصویر انتخاب کنه، باید اول wp_enqueue_media رو صدا بزنی تا پنجره انتخاب رسانه بالا بیاد. این تابع اسکریپتها و استایلهای لازم برای آپلود و انتخاب فایل رو بارگذاری میکنه.
توابع کار با تصویر شاخص و تصاویر ویژه
()has_post_thumbnail
بررسی میکنه که نوشته جاری یا نوشته مشخصی که میدی، تصویر شاخص داره یا نه. خروجیش فقط true یا false هست. توی قالب وقتی میخوای یه بخش رو فقط برای نوشتههایی که تصویر شاخص دارن نمایش بدی، اول باید با has_post_thumbnail این موضوع رو چک کنی.
()the_post_thumbnail
تصویر شاخص نوشته جاری رو چاپ میکنه. میتونی اندازه تصویر رو مشخص کنی و حتی کلاسهای CSS هم بهش اضافه کنی. توی قالب وقتی میخوای تصویر اصلی نوشته رو نشون بدی، the_post_thumbnail سادهترین و استانداردترین راهه.
()get_the_post_thumbnail
همون تصویر شاخص رو برمیگردونه ولی چیزی چاپ نمیکنه. یعنی تگ img کامل تصویر رو بهت میده تا خودت تصمیم بگیری کجا و چطور استفادهش کنی. وقتی میخوای تصویر شاخص رو توی متغیر ذخیره کنی یا قبل از نمایش تغییرش بدی، get_the_post_thumbnail همون چیزیه که لازم داری.
()add_image_size
یه اندازه جدید برای تصاویر توی وردپرس تعریف میکنه. یعنی میتونی بگی که وردپرس علاوه بر اندازههای پیشفرض، فلان ابعاد مشخص رو هم بسازه. وقتی قالبی میسازی که تصاویرش باید توی ابعاد خاصی برش بخورن، add_image_size این امکان رو فعال میکنه.
()add_theme_support
قابلیتهای مختلفی رو برای قالب فعال میکنه. یکی از مهمترین کاربرداش فعال کردن تصویر شاخص برای نوشتههاست، ولی کلی قابلیت دیگه مثل فرمت نوشته، فید RSS و عنوان داینامیک هم باهاش فعال میشه. توی فایل functions.php قالب، add_theme_support یکی از اولین چیزاییه که باید صدا بزنی.
توابع کوئری، حلقه و واکشی دادهها
()new WP_Query
بهت اجازه میده که یه کوئری سفارشی برای گرفتن نوشتهها از دیتابیس بسازی. یعنی میتونی مشخص کنی که چه نوشتههایی با چه شرایطی از دیتابیس خونده بشن؛ مثلاً نوشتههای یه دسته خاص یا نوشتههایی که فلان متادیتا رو دارن. وقتی میخوای لیستی از محتوا رو خارج از حلقه اصلی وردپرس نمایش بدی، باید یه نمونه جدید از WP_Query بسازی.
()query
متدی از کلاس WP_Query هست که کوئری رو با پارامترهای جدید اجرا میکنه. یعنی اگه یه نمونه WP_Query داری و میخوای شرایطش رو عوض کنی، میتونی با query پارامترهای تازه بدی و نتیجه جدید بگیری. این متد برای مواقعی که میخوای همون شیء رو با شرایط متفاوت اجرا کنی کاربردیه.
()get_query_var
مقدار یه متغیر از کوئری جاری وردپرس رو برمیگردونه. مثلاً میتونی بفهمی که کاربر الان توی چه صفحهای از صفحهبندی هست یا چه دستهای رو داره میبینه. وقتی توی قالب میخوای به اطلاعات کوئری اصلی دسترسی داشته باشی، get_query_var خیلی کمک میکنه.
()setup_postdata
دادههای نوشته جاری رو برای استفاده از توابع قالبی مثل the_title و the_content آماده میکنه. وقتی یه حلقه سفارشی با WP_Query داری، باید داخل حلقه setup_postdata رو صدا بزنی تا توابع استاندارد وردپرس درست کار کنن. این تابع متغیر سراسری نوشته رو تنظیم میکنه.
()wp_reset_postdata
بعد از یه حلقه سفارشی، دادههای نوشته اصلی رو برمیگردونه. وقتی WP_Query سفارشی اجرا میکنی، متغیر سراسری نوشته عوض میشه و باید بعد از اتمام کار با wp_reset_postdata همه چیز رو به حالت اول برگردونی. اگه این کار رو نکنی، بقیه صفحه به هم میریزه.
()in_the_loop
بررسی میکنه که الان داخل حلقه اصلی وردپرس هستی یا نه. خروجیش true یا false هست. وقتی توی قالب میخوای مطمئن بشی که یه کد فقط داخل حلقه اجرا بشه، in_the_loop این اطمینان رو بهت میده.
()is_main_query
بررسی میکنه که کوئری در حال اجرا، کوئری اصلی وردپرسه یا یه کوئری سفارشی. این تابع معمولاً توی هوکهایی مثل pre_get_posts استفاده میشه. با is_main_query مطمئن میشی که تغییراتت فقط روی کوئری اصلی اعمال بشه و کوئریهای سفارشی دست نخورن.
()get_queried_object
شیء اصلی که کوئری جاری بر اساسش ساخته شده رو برمیگردونه. مثلاً اگه کاربر توی صفحه یه دستهست، شیء دسته رو میده؛ اگه توی صفحه یه نوشتهست، شیء نوشته رو. وقتی میخوای بدون که کاربر دقیقاً داره چه چیزی رو میبینه، get_queried_object اطلاعات کاملی بهت میده.
()get_queried_object_id
فقط شناسه همون شیء اصلی کوئری رو برمیگردونه. یعنی بهجای این که کل شیء رو بگیری، فقط عدد شناسهش رو داری. وقتی فقط به شناسه دسته، نوشته یا کاربر جاری نیاز داری، get_queried_object_id سریعتر و سبکتره.
توابع مدیریت کش و دادههای موقت (Transient)
()get_transient
یه مقدار موقت که قبلاً توی کش وردپرس ذخیره شده رو برمیگردونه. دادههای موقت یا همون Transient ها مثل یه انبار موقت عمل میکنن که یه مقدار رو برای مدت مشخصی نگه میدارن. وقتی میخوای نتیجه یه کوئری سنگین یا خروجی یه درخواست خارجی رو بدون اجرای دوباره بگیری، اول باید با get_transient چک کنی که آیا قبلاً ذخیره شده یا نه.
()set_transient
یه مقدار رو بهصورت موقت توی دیتابیس ذخیره میکنه و براش زمان انقضا مشخص میکنه. یعنی میتونی بگی که این داده تا فلان ساعت یا فلان روز قابل استفاده باشه و بعدش خودش پاک بشه. وقتی نتیجه یه پردازش سنگین رو گرفتی و نمیخوای توی هر بار لود صفحه دوباره همون کار رو انجام بدی، set_transient نجاتدهندهست.
()delete_transient
یه مقدار موقت ذخیرهشده رو از کش پاک میکنه. یعنی همون دادهای که با set_transient ساختی رو میتونی با delete_transient حذف کنی. وقتی اطلاعاتت عوض شده و نمیخوای کش قدیمی استفاده بشه، قبل از هر چیز باید delete_transient رو صدا بزنی تا مقدار تازه دوباره ذخیره بشه.
توابع ارسال ایمیل و مدیریت خطاهای آن
()wp_mail
تابع اصلی وردپرس برای ارسال ایمیل از طریق PHP هست. یعنی بهجای این که مستقیم با تابع mail خود PHP کار کنی، wp_mail همه چیز رو با ساختار درست وردپرس مدیریت میکنه. این تابع گیرنده، موضوع، متن پیام و حتی هدرهای اضافه مثل فرستنده رو میگیره و ایمیل رو ارسال میکنه. وقتی افزونهای داری که قراره بعد از ثبتنام، خرید یا هر رویدادی به کاربر اطلاع بده، wp_mail همون راه استانداردیه. البته باید بدونی که موفقیت این تابع به تنظیمات سرور ایمیل هاست بستگی داره و اگه ارسال درست انجام نشه، معمولاً مشکل از پیکربندی SMTP یا هاسته، نه خود wp_mail.
توابع AJAX و ارسال پاسخهای JSON
()wp_send_json_error
یه پاسخ JSON با وضعیت خطا به درخواست AJAX برمیگردونه. یعنی وقتی توی یه عملیات AJAX چیزی اشتباه پیش میره، با این تابع به جاوااسکریپت میگی که عملیات ناموفق بوده. میتونی یه پیام یا داده اضافه هم باهاش بفرستی تا طرف مقابل بدونه مشکل از کجاست. بعد از صدا زدن wp_send_json_error اجرای کد متوقف میشه.
()wp_send_json_success
دقیقاً برعکس قبلیه و یه پاسخ موفقیتآمیز JSON به درخواست AJAX میفرسته. وقتی عملیات درست انجام شده و میخوای نتیجه رو به جاوااسکریپت برگردونی، wp_send_json_success با یه ساختار استاندارد این کار رو میکنه. مثل تابع قبلی، بعد از اجراش کد متوقف میشه.
()wp_doing_ajax
بررسی میکنه که درخواست فعلی از نوع AJAX هست یا نه. خروجیش true یا false هست. وقتی میخوای یه کد فقط توی درخواستهای AJAX اجرا بشه یا برعکس فقط توی لود معمولی صفحه، wp_doing_ajax شرط درستیه.
توابع مدیریت پلاگین و هوکهای فعالسازی
()register_activation_hook
یه تابع رو به لحظه فعالسازی افزونه وصل میکنه. یعنی وقتی کاربر دکمه فعالسازی افزونهات رو میزنه، هر کاری که توی این تابع نوشتی اجرا میشه. معمولاً از register_activation_hook برای ساخت جدول دیتابیس، تنظیم گزینههای پیشفرض یا آمادهسازی اولیه افزونه استفاده میکنن.
()plugin_basename
مسیر نسبی یه فایل افزونه رو بر اساس پوشه plugins برمیگردونه. یعنی اگه مسیر کامل فایل اصلی افزونهات رو بدی، خروجیش یه رشته مثل “myplugin/myplugin.php” میشه. این تابع معمولاً همراه register_activation_hook استفاده میشه تا وردپرس بفهمه کدوم افزونه قراره فعال بشه.
()plugin_dir_path
مسیر فیزیکی پوشه یه افزونه روی سرور رو برمیگردونه. یعنی آدرس واقعی توی سیستم فایل هاست که افزونهات توش قرار داره. وقتی میخوای فایلی از افزونهات رو از روی سرور بخونی یا include کنی، plugin_dir_path نقطه شروع درستیه.
()plugin_dir_url
آدرس اینترنتی پوشه یه افزونه رو برمیگردونه. یعنی آدرسی که مرورگر میتونه باهاش فایلهای CSS، JS یا تصاویر افزونه رو لود کنه. وقتی میخوای فایل استاتیک از افزونهات رو توی صفحه بارگذاری کنی، plugin_dir_url لازمه.
()plugins_url
آدرس کامل یه فایل مشخص داخل پوشه افزونهها رو میسازه. میتونی مسیر نسبی فایل رو بدی و آدرس اینترنتی کاملش رو بگیری. وقتی میخوای به یه فایل خاص توی افزونهات لینک بدی، plugins_url سریعترین راهه.
()is_plugin_active
بررسی میکنه که یه افزونه مشخص فعاله یا نه. باید مسیر نسبی افزونه رو بدی و جواب true یا false میگیری. وقتی افزونهات برای کار به افزونه دیگهای وابستهست، با is_plugin_active میتونی قبل از اجرا مطمئن بشی که اون افزونه فعاله.
توابع مدیریت قالب و فایلهای بخش (Partial)
()get_template_part
یه فایل قالب مشخص رو بارگذاری میکنه. یعنی میتونی قالب رو به بخشهای کوچیکتر مثل کارت نوشته یا بخش نظرات تقسیم کنی و هر جا لازم داشتی با get_template_part صدا بزنی. این تابع ساختار قالب رو تمیزتر و ماژولارتر میکنه.
()get_header
فایل header.php قالب رو بارگذاری میکنه. یعنی وقتی توی قالب میخوای بخش بالای سایت شامل تگهای ابتدایی HTML، منو و لوگو نمایش داده بشه، get_header رو صدا میزنی. این تابع یکی از پایهایترین توابع ساختار قالب وردپرسه.
()get_footer
فایل footer.php قالب رو بارگذاری میکنه. یعنی بخش پایانی سایت شامل فوتر، اسکریپتها و بسته شدن تگهای HTML. وقتی ساختار قالب رو میچینی، get_footer دقیقاً همون جاییه که صفحه رو میبنده.
توابع مدیریت منوها، سایدبارها و ناحیههای ابزارک
()register_nav_menus
یه یا چند جایگاه منو توی قالب ثبت میکنه. یعنی به وردپرس میگی که قالب من چند تا منو داره و هر کدوم کجای سایت قرار میگیرن. بعد از ثبت، کاربر میتونه از پیشخوان منوها رو بسازه و به این جایگاهها اختصاص بده.
()has_nav_menu
بررسی میکنه که برای یه جایگاه منوی مشخص، منویی اختصاص داده شده یا نه. خروجیش true یا false هست. وقتی میخوای مطمئن بشی که قبل از نمایش منو، واقعاً منویی وجود داره، has_nav_menu شرط درستیه.
()wp_nav_menu
منویی که برای یه جایگاه مشخص ثبت شده رو نمایش میده. این تابع کلی گزینه برای کنترل ساختار HTML، کلاسها و عمق منو داره. وقتی میخوای توی قالب منوی سایت رو نشون بدی، wp_nav_menu استانداردترین راهه.
()register_sidebar
یه ناحیه ابزارک جدید توی قالب ثبت میکنه. یعنی جایی مثل سایدبار یا فوتر که کاربر بتونه توش ابزارکها رو بچینه. با register_sidebar مشخص میکنی که این ناحیه چه اسمی داشته باشه و ساختار HTMLش چطور باشه.
()dynamic_sidebar
ابزارکهایی که کاربر برای یه ناحیه مشخص چیده رو نمایش میده. یعنی هر چیزی که کاربر از پیشخوان توی اون سایدبار گذاشته، dynamic_sidebar به ترتیب چاپ میکنه. این تابع توی قالب برای نمایش سایدبار و فوتر ابزارکدار ضروریه.
()is_active_sidebar
بررسی میکنه که یه ناحیه ابزارک مشخص، محتوایی داره یا نه. یعنی آیا کاربر ابزارکی توش گذاشته یا خالیه. وقتی میخوای فقط در صورت وجود محتوا، یه بخش رو نمایش بدی، is_active_sidebar شرط درستیه.
توابع ثبت و مدیریت ویجتهای سفارشی
()register_widget
یه ویجت سفارشی که با کلاس ساخته بودی رو توی وردپرس ثبت میکنه. بعد از ثبت، کاربر میتونه از پیشخوان این ویجت رو به سایدبارها اضافه کنه. وقتی یه ویجت اختصاصی برای افزونهات ساختی، register_widget راه رسمی معرفیش به وردپرسه.
()unregister_widget
یه ویجت ثبتشده رو از وردپرس حذف میکنه. یعنی دیگه کاربر نمیتونه اون ویجت رو به سایدبار اضافه کنه. وقتی میخوای یه ویجت پیشفرض یا ویجت افزونه دیگه رو غیرفعال کنی، unregister_widget دقیقاً همین کار رو میکنه.
توابع مدیریت شورتکدها و خروجی آنها
()add_shortcode
یه شورتکد سفارشی جدید تعریف میکنه. یعنی یه اسم مثل [mybox] انتخاب میکنی و مشخص میکنی که وقتی این شورتکد توی محتوا دیده شد، چه تابعی اجرا بشه. با add_shortcode کاربر میتونه با نوشتن یه متن کوتاه، خروجی پیچیدهای که تو ساختی رو ببینه.
()do_shortcode
متنی که داخلش شورتکد هست رو میگیره و خروجی واقعی شورتکد رو برمیگردونه. یعنی اگه توی قالب یا محتوا متنی داری که شامل شورتکده، do_shortcode اون رو تشخیص میده و اجرا میکنه. این تابع برای اجرای شورتکد خارج از محتوای اصلی نوشته لازمه.
()shortcode_atts
پارامترهای ارسالشده به یه شورتکد رو با مقادیر پیشفرض ترکیب میکنه. یعنی اگه کاربر فلان ویژگی رو مشخص نکرده باشه، همون مقدار پیشفرض خودت به کار میره. shortcode_atts از بروز خطا و رفتار غیرمنتظره توی شورتکدها جلوگیری میکنه.
توابع مدیریت URL، مسیرها و لینکسازی
()add_query_arg
به یه آدرس اینترنتی، پارامترهای جدید اضافه میکنه. یعنی میتونی یه سری کلید و مقدار بدی و آدرس جدیدی که شامل این پارامترهاست رو بگیری. وقتی میخوای لینکی بسازی که فیلتر یا صفحهبندی خاصی داشته باشه، add_query_arg خیلی کاربردیه.
()remove_query_arg
پارامترهای مشخصی رو از یه آدرس حذف میکنه. یعنی اگه لینکی داری که یه سری پارامتر اضافه داره و نمیخوایشون، remove_query_arg آدرس تمیز رو بهت میده. این تابع برای ساخت لینکهای مرتب و کاربردی خیلی مفیده.
()wp_safe_redirect
کاربر رو به یه آدرس دیگه منتقل میکنه، ولی فقط اگه اون آدرس توی لیست مجاز وردپرس باشه. این تابع امنیت بالاتری نسبت به ریدایرکت معمولی داره. وقتی بعد از پردازش فرم میخوای کاربر رو به صفحه امنی بفرستی، wp_safe_redirect بهترین انتخابه.
توابع مدیریت نقشها، سطح دسترسی و کنترل کاربران
()current_user_can
بررسی میکنه که کاربر فعلی یه قابلیت مشخص رو داره یا نه. مثلاً میفهمی که آیا کاربر میتونه نوشته منتشر کنه یا تنظیمات رو تغییر بده. وقتی میخوای دسترسی به بخشی رو محدود کنی، current_user_can سادهترین راهه.
()user_can
مثل current_user_can عمل میکنه، ولی برای یه کاربر مشخص نه فقط کاربر فعلی. یعنی شناسه کاربر و قابلیت رو میدی و جواب میگیری. وقتی میخوای سطح دسترسی کاربر دیگهای رو چک کنی، user_can درست همینه.
()get_role
یه شیء از نقش مشخص توی وردپرس رو برمیگردونه که شامل همه قابلیتهای اون نقشه. مثلاً میفهمی که نقش “نویسنده” چه کارهایی میتونه انجام بده. وقتی نقشها رو بررسی یا تغییر میدی، get_role اطلاعات کامل بهت میده.
()add_role
یه نقش کاربری جدید به وردپرس اضافه میکنه. یعنی میتونی یه نقش سفارشی مثل “مدیر فروشگاه” بسازی و مشخص کنی چه قابلیتهایی داره. وقتی افزونهات نیاز به سطح دسترسی جدید داره، add_role راه رسمی ساخت نقشه.
توابع محلیسازی، ترجمه و پشتیبانی از زبان فارسی
()__
تابع اصلی ترجمه در وردپرسه که یه متن رو میگیره و ترجمهاش رو از فایل زبان برمیگردونه. یعنی وقتی توی قالب یا افزونه متنی مینویسی، اگه با بذاریش، وردپرس میتونه به زبان کاربر نشونش بده. این تابع چیزی چاپ نمیکنه و فقط مقدار ترجمهشده رو برمیگردونه. برای پشتیبانی از زبان فارسی توی افزونهات، __ ضروریه.
()__esc_html
همون کار رو میکنه با یه تفاوت مهم؛ متن رو قبل از برگردوندن امن میکنه و هر کد HTML یا جاوااسکریپت خطرناکی رو خنثی میکنه. یعنی ترجمه میکنه و بعد امنسازی میکنه. وقتی متنی داری که هم باید ترجمه بشه و هم نباید کد توش اجرا بشه، esc_html بهترین انتخابه.
()number_format_i18n
یه عدد رو با فرمت مناسب زبان جاری سایت نمایش میده. یعنی اگه سایت فارسی باشه، جداکنندههای هزارگان و اعشار رو طبق زبان فارسی اعمال میکنه. وقتی میخوای عددی رو به کاربر نشون بدی، بهجای number_format معمولی، number_format_i18n انتخاب درستیه.
()is_rtl
بررسی میکنه که زبان جاری سایت راست به چپ هست یا نه. یعنی اگه سایت فارسی یا عربی باشه، true برمیگردونه. وقتی میخوای استایل خاصی برای زبانهای راست به چپ اعمال کنی، is_rtl شرط دقیقی بهت میده.
()load_theme_textdomain
فایلهای ترجمه قالب رو بارگذاری میکنه. یعنی به وردپرس میگی که ترجمههای قالب از کجا خونده بشن. وقتی قالبی میسازی که میخوای متنهاش قابل ترجمه باشه، حتماً باید load_theme_textdomain رو توی functions.php صدا بزنی.
توابع مدیریت تنظیمات پیشخوان و صفحات مدیریت
()add_menu_page
یه آیتم جدید به منوی اصلی پیشخوان وردپرس اضافه میکنه. یعنی میتونی یه صفحه مدیریت اختصاصی برای افزونهات بسازی که از منوی کناری پیشخوان قابل دسترس باشه. این تابع عنوان صفحه، عنوان منو، سطح دسترسی و تابع نمایشدهنده رو میگیره. وقتی افزونهای با تنظیمات اختصاصی داری، add_menu_page اولین قدمه.
()add_options_page
یه زیرمنو زیر بخش تنظیمات پیشخوان اضافه میکنه. یعنی صفحه تنظیمات افزونهات رو میتونی توی منوی “تنظیمات” قرار بدی. وقتی افزونهات فقط یه صفحه تنظیمات ساده داره، add_options_page تمیزترین راهه.
()add_theme_page
یه زیرمنو زیر بخش “نمایش” پیشخوان اضافه میکنه. یعنی تنظیمات مربوط به قالب رو میتونی توی منوی نمایش بذاری. وقتی قالبی با تنظیمات اختصاصی داری، add_theme_page جای درستیه.
()add_meta_box
یه جعبه جدید به صفحه ویرایش نوشته اضافه میکنه. یعنی میتونی یه بخش سفارشی بالای دکمه انتشار یا زیر ادیتور اضافه کنی که فیلدهای اختصاصی خودت رو داشته باشه. وقتی میخوای متادیتای سفارشی رو از طریق پیشخوان مدیریت کنی، add_meta_box راه رسمیشه.
()wp_editor
ادیتور پیشرفته وردپرس رو توی صفحه تنظیمات افزونهات نمایش میده. یعنی همون ادیتور متن که توی نوشتهها هست رو میتونی توی فرم سفارشی خودت هم داشته باشی. وقتی افزونهات نیاز به ورودی متنی طولانی با قابلیت ویرایش داره، wp_editor عالیه.
توابع مدیریت اسکریپتها و استایلها
()wp_enqueue_script
یه فایل جاوااسکریپت رو به صفحه اضافه میکنه. یعنی به وردپرس میگی که این اسکریپت رو با مشخصات مشخص بارگذاری کن. وقتی افزونه یا قالبت نیاز به JS داره، باید با wp_enqueue_script بهصورت استاندارد اضافهش کنی تا تداخلی پیش نیاد.
()wp_enqueue_style
یه فایل CSS رو به صفحه اضافه میکنه. یعنی استایلهای افزونه یا قالب رو بهصورت استاندارد بارگذاری میکنی. وقتی قالبت یا افزونهات ظاهر خاصی داره، wp_enqueue_style راه درست اضافه کردن استایلشه.
()wp_localize_script
اطلاعات PHP رو به یه اسکریپت جاوااسکریپت پاس میده. یعنی میتونی یه آرایه از مقادیر PHP رو توی یه متغیر جاوااسکریپت در دسترس اسکریپتت بذاری. وقتی اسکریپتت نیاز به آدرس AJAX یا تنظیمات داره، wp_localize_script بهترین راهه.
()wp_add_inline_script
یه تکه کد جاوااسکریپت مستقیماً بعد از یه اسکریپت مشخص اضافه میکنه. یعنی میتونی تنظیمات کوچیک یا کد اضافه رو بدون ساخت فایل جدید توی صفحه بذاری. وقتی میخوای یه متغیر یا تابع کوتاه به اسکریپتت وصل کنی، wp_add_inline_script سریعتره.
()wp_add_inline_style
یه تکه کد CSS مستقیماً بعد از یه استایل مشخص اضافه میکنه. یعنی میتونی استایلهای داینامیک رو بدون فایل جداگانه به صفحه اضافه کنی. وقتی رنگها یا استایلها از تنظیمات داینامیک میان، wp_add_inline_style عالیه.
()wp_deregister_script
یه اسکریپت ثبتشده رو بهطور کامل از صف حذف میکنه. یعنی دیگه وردپرس حتی اگه جایی خواسته شده باشه هم اون رو نمیشناسه. وقتی میخوای یه اسکریپت پیشفرض یا اسکریپت افزونه دیگه رو غیرفعال کنی، wp_deregister_script لازمه.
()wp_dequeue_script
یه اسکریپت که قراره لود بشه رو از صف بارگذاری حذف میکنه. یعنی اسکریپت هنوز ثبت شده، ولی دیگه توی صفحه لود نمیشه. وقتی فقط میخوای اسکریپت توی صفحات خاصی نیاد، wp_dequeue_script کافیه.
()wp_deregister_style
یه استایل ثبتشده رو کاملاً حذف میکنه. یعنی دیگه وردپرس اون استایل رو نمیشناسه. وقتی میخوای استایل پیشفرض یا استایل افزونه دیگه رو کامل غیرفعال کنی، wp_deregister_style لازمه.
()wp_dequeue_style
یه استایل رو از صف بارگذاری حذف میکنه بدون این که ثبتش رو از بین ببره. یعنی استایل لود نمیشه ولی هنوز شناختهشدهست. وقتی فقط میخوای استایلی توی یه صفحه خاص نیاد، wp_dequeue_style انتخابه.
توابع HTTP و ارتباط با سرویسهای خارجی
()wp_remote_post
یه درخواست HTTP از نوع POST به یه آدرس خارجی میفرسته. یعنی میتونی دادهها رو به یه سرویس دیگه بفرستی و جوابش رو بگیری. وقتی افزونهات قراره با یه API خارجی مثل درگاه پرداخت یا سرویس پیامک ارتباط بگیره، wp_remote_post راه استاندارد وردپرسه.
()wp_remote_retrieve_body
بدنه پاسخ یه درخواست HTTP رو جدا میکنه و برمیگردونه. یعنی وقتی با wp_remote_post یا wp_remote_get درخواست فرستادی، جواب شامل هدر و بدنهست. با wp_remote_retrieve_body فقط همون محتوای اصلی پاسخ رو میگیری.
توابع تاریخ، زمان و منطقه زمانی
()date_i18n
یه timestamp رو با فرمت و زبان جاری سایت نمایش میده. یعنی برخلاف date معمولی PHP، این تابع ماهها و روزها رو به زبان وردپرس برمیگردونه. وقتی میخوای تاریخ رو فارسی نشون بدی، date_i18n دقیقاً همون چیزیه که لازم داری.
()wp_date
تاریخ رو با در نظر گرفتن منطقه زمانی تنظیمشده توی وردپرس برمیگردونه. یعنی مهم نیست سرور چه منطقه زمانی داره، تاریخ بر اساس تنظیمات سایت درست محاسبه میشه. وقتی میخوای تاریخ دقیق و درست وردپرس رو بگیری، wp_date انتخاب درستیه.
()current_time
زمان فعلی رو بر اساس تنظیمات وردپرس برمیگردونه. میتونی بگی که خروجی timestamp باشه یا با فرمت خاصی نمایش داده بشه. وقتی میخوای زمان فعلی سایت رو با توجه به منطقه زمانی وردپرس بدونی، current_time سادهترین راهه.
توابع مدیریت بازنویسی URL و ساختار پیوندها
()add_rewrite_endpoint
یه نقطه پایانی جدید به ساختار URL وردپرس اضافه میکنه. یعنی میتونی آدرسهایی مثل /account/orders بسازی که به یه بخش خاص اشاره کنن. وقتی افزونهات نیاز به صفحات مجازی با آدرس تمیز داره، add_rewrite_endpoint راه رسمیشه.
()add_rewrite_rule
یه قانون بازنویسی URL جدید تعریف میکنه. یعنی میتونی مشخص کنی که فلان ساختار آدرس به فلان کوئری وردپرس تبدیل بشه. وقتی میخوای آدرسهای سفارشی بسازی، add_rewrite_rule ابزار دقیقی بهت میده.
()flush_rewrite_rules
قوانین بازنویسی URL وردپرس رو بازسازی میکنه. یعنی وقتی endpoint یا rewrite rule جدید اضافه میکنی، باید flush_rewrite_rules رو صدا بزنی تا قوانین جدید توی دیتابیس ثبت بشن. این تابع معمولاً موقع فعالسازی افزونه اجرا میشه.
توابع صفحهبندی و لینکهای شمارهگذاری
()paginate_links
یه سری لینک صفحهبندی کامل میسازه. یعنی شماره صفحات، لینک قبلی و بعدی رو با ساختار مناسب برمیگردونه. وقتی لیستی از نوشتهها داری که به چند صفحه تقسیم شده، paginate_links بهترین راه نمایش صفحهبندیه.
()get_pagenum_link
لینک صفحه مشخصی از صفحهبندی جاری رو برمیگردونه. یعنی میتونی لینک صفحه ۵ نتایج رو بگیری. وقتی داری صفحهبندی سفارشی میسازی، get_pagenum_link پایه ساخت لینکهاست.
()wp_link_pages
صفحهبندی داخلی یه نوشته رو نمایش میده. وقتی یه نوشته طولانی رو با تگ nextpage به چند بخش تقسیم میکنی، wp_link_pages لینکهای هر بخش رو میسازه.
توابع کمکی فرمها و کنترلهای ورودی
()checked
بررسی میکنه که یه مقدار با یه مقدار دیگه برابره و اگه بود، ویژگی checked رو برای checkbox یا radio چاپ میکنه. یعنی وقتی فرمی داری که باید وضعیت قبلی checkbox حفظ بشه، checked این کار رو خودکار انجام میده.
()selected
مثل checked ولی برای گزینههای select. یعنی بررسی میکنه که کدوم گزینه باید انتخابشده باشه و ویژگی selected رو اضافه میکنه. وقتی فرم تنظیمات داری که باید مقدار قبلی select حفظ بشه، selected لازمه.
()submit_button
دکمه ذخیرهسازی استاندارد وردپرس رو میسازه. بهجای این که خودت تگ button بنویسی، این تابع دکمهای با استایل درست بهت میده. توی فرمهای تنظیمات، submit_button کار رو سریعتر و تمیزتر میکنه.
()wp_nonce_field
یه فیلد مخفی امنیتی به فرم اضافه میکنه. این فیلد شامل کد nonce هست که موقع پردازش فرم اعتبارسنجی میشه. وقتی یه فرم سفارشی داری، wp_nonce_field لایه امنیت لازم رو اضافه میکنه.
توابع بهینهسازی، پاکسازی و فشردهسازی کد
()wpautop
متن ساده رو به پاراگرافهای HTML تبدیل میکنه. یعنی اینترها رو به تگهای
تبدیل میکنه. وردپرس خودش موقع نمایش محتوا از wpautop استفاده میکنه.
()wptexturize
کاراکترهای ساده متنی رو به نسخههای تایپوگرافیک زیباتر تبدیل میکنه. مثلاً علامت نقل قول ساده رو به علامتهای منحنی تبدیل میکنه.
()wp_strip_all_tags
همه تگهای HTML رو از یه متن حذف میکنه و فقط متن خالی رو برمیگردونه. وقتی میخوای مطمئن بشی هیچ کدی توی متن باقی نمیمونه، wp_strip_all_tags لازمه.
()wp_trim_words
یه متن طولانی رو به تعداد کلمات مشخصی محدود میکنه. وقتی میخوای خلاصهای از نوشته نشون بدی، wp_trim_words تمیز انجامش میده.
()sanitize_title
یه متن رو به یه اسلاگ تمیز تبدیل میکنه. یعنی حروف بزرگ رو کوچیک میکنه و فاصلهها رو به خط تیره تبدیل میکنه. وقتی میخوای از عنوان، شناسه URL بسازی، sanitize_title همون تابعیه.
()sanitize_key
یه رشته رو به یه کلید معتبر تبدیل میکنه. یعنی فقط حروف کوچیک، اعداد، خط تیره و زیرخط رو نگه میداره. وقتی میخوای از ورودی کاربر بهعنوان کلید استفاده کنی، sanitize_key لازمه.
()sanitize_html_class
متن رو به یه کلاس HTML معتبر تبدیل میکنه. یعنی کاراکترهای غیرمجاز رو حذف میکنه. وقتی میخوای از ورودی کاربر بهعنوان کلاس CSS استفاده کنی، sanitize_html_class امنیت رو تامین میکنه.
توابع حذف و پاکسازی هوکها
()remove_action
یه تابعی که قبلاً به یه هوک وصل شده رو ازش جدا میکنه. یعنی اگه افزونه یا قالب دیگهای تابعی به هوکی وصل کرده و تو نمیخوایش اجرا بشه، remove_action حذفش میکنه.
()remove_filter
یه تابعی که قبلاً به یه فیلتر وصل شده رو جدا میکنه. یعنی دیگه اون تابع روی مقدار فیلتر اعمال نمیشه. وقتی میخوای تغییرات فیلتری افزونه دیگه رو خنثی کنی، remove_filter لازمه.
()remove_meta_box
یه متاباکس مشخص رو از صفحه ویرایش نوشته حذف میکنه. یعنی میتونی بخشهایی که نمیخوای کاربر ببینه رو از پیشخوان حذف کنی. وقتی میخوای صفحه ویرایش رو سادهتر کنی، remove_meta_box کاربردیه.
()remove_theme_support
یه قابلیتی که قبلاً برای قالب فعال شده رو غیرفعال میکنه. مثلاً اگه قالب والد تصویر شاخص رو فعال کرده و نمیخوایش، remove_theme_support غیرفعالش میکنه.
()remove_submenu_page
یه زیرمنو از منوی پیشخوان حذف میکنه. یعنی میتونی گزینههایی که نمیخوای کاربر ببینه رو از منوی مدیریت حذف کنی. وقتی میخوای پیشخوان رو برای کاربران سادهتر کنی، remove_submenu_page لازمه.
هوکهای بارگذاری اولیه وردپرس و ترتیب اجرای آنها
add_action('plugins_loaded', 'function_name')
هوک plugins_loaded بعد از این که همه افزونهها بارگذاری شدن اجرا میشه. یعنی وقتی میخوای کدی اجرا بشه که مطمئنه همه افزونهها فعال و در دسترسن، این هوک مناسبه. برای بارگذاری ترجمهها یا تنظیم اولیه افزونه خیلی کاربردیه.
add_action('init', 'function_name')
هوک init بعد از این که وردپرس پایهاش آماده شد اجرا میشه. یعنی موقعی که میتونی تایپهای سفارشی، taxonomy ها و قوانین rewrite رو ثبت کنی. این هوک یکی از پرکاربردترین هوکهای وردپرسه.
add_action('wp_loaded', 'function_name')
هوک wp_loaded بعد از این که وردپرس کاملاً لود شد و همه چیز آمادهست اجرا میشه. یعنی از init دیرتره و مطمئنی که همه چیز سر جاشه. وقتی میخوای کاری بعد از کامل شدن بارگذاری انجام بدی، wp_loaded مناسبه.
add_action('admin_init', 'function_name')
هوک admin_init فقط توی پیشخوان اجرا میشه و قبل از بارگذاری کامل صفحه مدیریته. وقتی میخوای تنظیماتی رو توی پیشخوان ثبت کنی یا بررسی دسترسی انجام بدی، admin_init انتخابه.
هوکهای منو و بارگذاری اسکریپت در پیشخوان
add_action('admin_menu', 'function_name')
موقع ساخت منوهای پیشخوان اجرا میشه. یعنی جایی که میتونی منوها و زیرمنوهای افزونهات رو اضافه کنی. وقتی صفحه تنظیمات اختصاصی داری، admin_menu هوک لازمه.
add_action('admin_enqueue_scripts', 'function_name')
برای بارگذاری اسکریپتها و استایلها توی پیشخوان استفاده میشه. یعنی وقتی افزونهات توی صفحات مدیریتی به CSS یا JS نیاز داره، با این هوک استاندارد اضافهشون میکنی.
add_action('wp_enqueue_scripts', 'function_name')
برای بارگذاری اسکریپتها و استایلها توی بخش نمایشی سایت استفاده میشه. یعنی وقتی قالبت یا افزونهات توی سایت به CSS یا JS نیاز داره، این هوک راه درستیه.
هوکهای نمایش محتوا و بخشهای اصلی قالب
add_action('wp_head', 'function_name')
توی بخش head سایت اجرا میشه. یعنی جایی که متاتگها، اسکریپتها و کدهای ضروری سئو اضافه میشن. وقتی میخوای چیزی به head سایت اضافه کنی، wp_head هوک درسته.
add_action('wp_footer', 'function_name')
انتهای سایت قبل از بسته شدن body اجرا میشه. یعنی جایی که اسکریپتهای پایین صفحه اضافه میشن. وقتی میخوای کدی توی فوتر سایت اجرا کنی، wp_footer هوک مناسبه.
add_action('template_redirect', 'function_name')
قبل از این که قالب انتخاب و لود بشه اجرا میشه. یعنی میتونی قبل از نمایش صفحه، کاربر رو ریدایرکت کنی یا قالب رو عوض کنی. وقتی میخوای کنترل کاملی روی نمایش صفحه داشته باشی، template_redirect عالیه.
add_action('rest_api_init', 'function_name')
موقع آمادهسازی REST API وردپرس اجرا میشه. یعنی جایی که endpoint های REST رو ثبت میکنی. وقتی میخوای API سفارشی بسازی، rest_api_init هوک لازمه.
هوکهای AJAX برای پردازش درخواستهای کاربران
add_action('wp_ajax_{action}', 'function_name')
هوک wp_ajax_{action} برای پردازش درخواستهای AJAX از کاربران واردشده استفاده میشه. یعنی action دلخواهت رو میذاری و وقتی درخواست AJAX با همون action بیاد، تابع اجرا میشه.
add_action('wp_ajax_nopriv_{action}', 'function_name')
هوک wp_ajax_nopriv_{action} برای پردازش درخواستهای AJAX از کاربران واردنشده است. یعنی وقتی کاربر مهمان یه درخواست AJAX بفرسته، این هوک پردازشش میکنه.
هوکهای مربوط به نوشتهها و چرخه حیات پست
add_action('save_post', 'function_name')
هوک save_post موقع ذخیره شدن یه نوشته اجرا میشه. یعنی هر وقت نوشتهای ساخته یا ویرایش بشه، تابعت صدا زده میشه. وقتی میخوای متادیتای سفارشی رو با ذخیره نوشته هماهنگ کنی، save_post اصلیترین هوکه.
add_action('save_post_{post_type}', 'function_name')
هوک save_post_{post_type} مثل save_post ولی فقط برای یه تایپ نوشته خاص. یعنی فقط وقتی فلان تایپ ذخیره بشه، تابع اجرا میشه. وقتی فقط با محصولات یا یه تایپ سفارشی کار داری، این هوک دقیقتره.
add_action('pre_get_posts', 'function_name')
هوک pre_get_posts قبل از اجرای کوئری اصلی وردپرس صدا زده میشه. یعنی میتونی پارامترهای کوئری رو قبل از این که از دیتابیس خونده بشه تغییر بدی. وقتی میخوای نتایج جستجو یا آرشیو رو شخصیسازی کنی، pre_get_posts بهترین راهه.
add_action('wp_insert_post', 'function_name')
هوک wp_insert_post دقیقاً بعد از این که یه نوشته توی دیتابیس ثبت شد اجرا میشه. یعنی وقتی نوشتهای ساخته شد، این هوک فعال میشه. برای کارهای بعد از ساخت نوشته مثل ارسال ایمیل یا بهروزرسانی کش، wp_insert_post مناسبه.
add_action('transition_post_status', 'function_name')
هوک transition_post_status موقع تغییر وضعیت یه نوشته مثل پیشنویس به منتشرشده اجرا میشه. یعنی میتونی بفهمی که وضعیت نوشته از چی به چی تغییر کرده. وقتی میخوای رویدادی رو بر اساس تغییر وضعیت انجام بدی، transition_post_status دقیقاً همون هوکه.
add_action('delete_post', 'function_name')
هوک delete_post موقع حذف شدن یه نوشته اجرا میشه. یعنی وقتی نوشتهای حذف میشه، تابع صدا زده میشه. برای پاکسازی دادههای مرتبط با نوشته حذفشده، delete_post لازمه.
add_action('before_delete_post', 'function_name')
هوک before_delete_post قبل از حذف شدن نوشته اجرا میشه. یعنی هنوز نوشته وجود داره و میتونی اطلاعاتش رو بخونی. وقتی میخوای قبل از حذف، پشتیبان بگیری یا بررسی انجام بدی، before_delete_post هوک درسته.
add_action('wp_trash_post', 'function_name')
هوک wp_trash_post موقع انتقال نوشته به زبالهدان اجرا میشه. یعنی نوشته هنوز کامل حذف نشده و فقط به زبالهدان رفته. وقتی میخوای با زبالهدان شدن نوشته کاری انجام بدی، wp_trash_post هوک لازمه.
add_action('untrashed_post', 'function_name')
هوک untrashed_post موقع برگردوندن نوشته از زبالهدان اجرا میشه. یعنی نوشته از زبالهدان به حالت عادی برگشته. وقتی میخوای بعد از بازیابی نوشته کاری انجام بدی، untrashed_post مناسبه.
add_action('pre_delete_post', 'function_name')
هوک pre_delete_post قبل از حذف دائم نوشته اجرا میشه. یعنی قبل از این که نوشته برای همیشه از دیتابیس پاک بشه. برای بررسیهای نهایی قبل از حذف دائم، pre_delete_post هوک درسته.
add_action('post_updated', 'function_name')
هوک post_updated بعد از بهروزرسانی یه نوشته موجود اجرا میشه. یعنی وقتی نوشتهای که قبلاً بوده ویرایش میشه، این هوک فعال میشه. برای کارهای بعد از ویرایش نوشته، post_updated مناسبه.
add_action('wp_after_insert_post', 'function_name')
هوک wp_after_insert_post بعد از ساخته یا بهروزرسانی شدن یه نوشته اجرا میشه. یعنی هم برای نوشته جدید و هم ویرایش فعال میشه. وقتی میخوای بعد از هر نوع ذخیرهسازی کاری انجام بدی، wp_after_insert_post انتخاب خوبیه.
هوکهای مربوط به کاربران و مدیریت حسابهای کاربری
add_action('user_register', 'function_name')
هوک user_register موقع ثبتنام یه کاربر جدید اجرا میشه. یعنی وقتی کاربری تازه توی سایت ثبتنام میکنه، این هوک فعال میشه. برای ارسال ایمیل خوشآمد یا تنظیمات اولیه کاربر، user_register عالیه.
add_action('profile_update', 'function_name')
هوک profile_update موقع بهروزرسانی پروفایل یه کاربر اجرا میشه. یعنی وقتی کاربر اطلاعاتش رو عوض میکنه، این هوک صدا زده میشه. برای همگامسازی دادههای کاربر با سیستم دیگه، profile_update مناسبه.
add_action('wp_login', 'function_name')
هوک wp_login موقع ورود موفق یه کاربر اجرا میشه. یعنی وقتی کاربر با نام کاربری و رمز درست وارد میشه، این هوک فعال میشه. برای ثبت زمان آخرین ورود یا ارسال اعلان، wp_login کاربردیه.
add_action('wp_logout', 'function_name')
هوک wp_logout موقع خروج کاربر از حسابش اجرا میشه. یعنی وقتی کاربر خارج میشه، این هوک صدا زده میشه. برای پاکسازی دادههای نشست یا کش کاربر، wp_logout مناسبه.
add_action('delete_user', 'function_name')
هوک delete_user موقع حذف یه کاربر اجرا میشه. یعنی وقتی کاربری از سایت حذف میشه، این هوک فعال میشه. برای پاکسازی دادههای مرتبط با کاربر، delete_user لازمه.
add_action('set_current_user', 'function_name')
هوک set_current_user موقع تغییر کاربر جاری اجرا میشه. یعنی وقتی وردپرس کاربر فعلی رو عوض میکنه، این هوک فعال میشه. برای بارگذاری تنظیمات خاص کاربر جاری، set_current_user کاربردیه.
هوکهای مربوط به دیدگاهها و مدیریت نظرات
add_action('comment_post', 'function_name')
هوک comment_post موقع ثبت یه دیدگاه جدید اجرا میشه. یعنی وقتی کاربر نظری میذاره، این هوک فعال میشه. برای ارسال اعلان نظر جدید یا اعتبارسنجی اضافه، comment_post مناسبه.
add_action('wp_insert_comment', 'function_name')
هوک wp_insert_comment بعد از ذخیره شدن دیدگاه توی دیتابیس اجرا میشه. یعنی دیدگاه ثبت شده و حالا میتونی روش پردازش انجام بدی. برای بهروزرسانی آمار نظرات، wp_insert_comment کاربردیه.
add_action('transition_comment_status', 'function_name')
هوک transition_comment_status موقع تغییر وضعیت دیدگاه مثل تایید به اسپم اجرا میشه. یعنی میتونی بفهمی وضعیت از چی به چی تغییر کرده. برای مدیریت خودکار نظرات، transition_comment_status عالیه.
add_action('wp_set_comment_status', 'function_name')
هوک wp_set_comment_status موقع تغییر وضعیت دیدگاه اجرا میشه. یعنی وقتی وضعیت نظری عوض میشه، این هوک فعال میشه. برای همگامسازی با سرویس دیگه، wp_set_comment_status مناسبه.
add_action('spammed_comment', 'function_name')
هوک spammed_comment موقع اسپم شدن دیدگاه اجرا میشه. یعنی وقتی نظری به عنوان اسپم علامت میخوره، این هوک فعال میشه. برای پاکسازی خودکار اسپمها، spammed_comment کاربردیه.
add_action('unspammed_comment', 'function_name')
هوک unspammed_comment موقع خارج شدن دیدگاه از وضعیت اسپم اجرا میشه. یعنی وقتی نظری از اسپم درمیاد، این هوک صدا زده میشه. برای بازیابی نظرات اشتباه اسپمشده، unspammed_comment مناسبه.
add_action('trashed_comment', 'function_name')
هوک trashed_comment موقع انتقال دیدگاه به زبالهدان اجرا میشه. یعنی نظر کامل حذف نشده و فقط به زبالهدان رفته. برای مدیریت نظرات حذفشده موقت، trashed_comment کاربردیه
add_action('untrashed_comment', 'function_name')
هوک untrashed_comment موقع برگشت دیدگاه از زبالهدان اجرا میشه. یعنی نظر بازیابی شده. برای بازگردوندن نظرات، untrashed_comment مناسبه.
add_action('deleted_comment', 'function_name')
هوک deleted_comment بعد از حذف کامل دیدگاه اجرا میشه. یعنی نظر دیگه وجود نداره. برای پاکسازی دادههای مرتبط با نظر حذفشده، deleted_comment لازمه.
هوکهای مربوط به ویجت و قالب
add_action('widgets_init', 'function_name')
هوک widgets_init موقع آمادهسازی ابزارکها اجرا میشه. یعنی جایی که ویجتها و سایدبارها رو ثبت میکنی. وقتی ویجت سفارشی داری، widgets_init هوک لازمه.
add_action('after_setup_theme', 'function_name')
هوک after_setup_theme بعد از لود شدن کامل قالب اجرا میشه. یعنی جایی که قابلیتهای قالب مثل تصویر شاخص و منوها رو ثبت میکنی. وقتی قالب میسازی، after_setup_theme یکی از اولین هوکهاست.
add_action('customize_register', 'function_name')
هوک customize_register موقع آمادهسازی سفارشیساز وردپرس اجرا میشه. یعنی جایی که تنظیمات ظاهری رو به بخش سفارشیسازی اضافه میکنی. وقتی قالبت تنظیمات ظاهری داره، customize_register هوک درسته.
add_action('switch_theme', 'function_name')
هوک switch_theme موقع تغییر قالب فعال سایت اجرا میشه. یعنی وقتی کاربر قالب جدید فعال میکنه، این هوک صدا زده میشه. برای پاکسازی تنظیمات قالب قبلی، switch_theme کاربردیه.
هوکهای مربوط به ایمیل و بهروزرسانیها
add_action('phpmailer_init', 'function_name')
هوک phpmailer_init قبل از ارسال ایمیل اجرا میشه و بهت اجازه میده تنظیمات SMTP رو تغییر بدی. یعنی میتونی مشخص کنی که ایمیلها از چه سروری ارسال بشن. برای پیکربندی ارسال امن ایمیل، phpmailer_init هوک لازمه.
add_action('wp_mail_failed', 'function_name')
هوک wp_mail_failed موقع خطا در ارسال ایمیل اجرا میشه. یعنی وقتی ارسال ایمیل موفق نباشه، این هوک فعال میشه. برای ثبت خطاها و اطلاع به مدیر، wp_mail_failed مناسبه.
add_action('upgrader_process_complete', 'function_name')
هوک upgrader_process_complete بعد از اتمام بهروزرسانی هسته، قالب یا افزونه اجرا میشه. یعنی وقتی بهروزرسانی کامل شد، این هوک صدا زده میشه. برای کارهای بعد از بهروزرسانی، upgrader_process_complete کاربردیه.
هوکهای مربوط به پلاگین و چرخه حیات آنها
add_action('activated_plugin', 'function_name')
هوک activated_plugin موقع فعال شدن یه افزونه اجرا میشه. یعنی وقتی افزونهای فعال میشه، این هوک صدا زده میشه. برای کارهای راهاندازی افزونه، activated_plugin مناسبه.
add_action('deactivated_plugin', 'function_name')
هوک deactivated_plugin موقع غیرفعال شدن یه افزونه اجرا میشه. یعنی وقتی افزونهای غیرفعال میشه، این هوک فعال میشه. برای پاکسازی موقت تنظیمات، deactivated_plugin کاربردیه.
هوکهای مربوط به پیشخوان و صفحات مدیریت
add_action('admin_notices', 'function_name')
هوک admin_notices برای نمایش پیامهای مدیریتی توی پیشخوان استفاده میشه. یعنی میتونی اعلانها، خطاها یا راهنماها رو بالای صفحات مدیریت نشون بدی. وقتی میخوای به کاربر پیشخوان پیامی بدی، admin_notices هوک درسته.
add_action('admin_bar_menu', 'function_name')
هوک admin_bar_menu برای اضافه کردن آیتمهای جدید به نوار ابزار بالای سایت استفاده میشه. یعنی میتونی لینکهای سفارشی به نوار مدیریت اضافه کنی. وقتی میخوای دسترسی سریع به بخشی از افزونهات بدی، admin_bar_menu مناسبه.
add_action('wp_dashboard_setup', 'function_name')
هوک wp_dashboard_setup موقع آمادهسازی داشبورد پیشخوان اجرا میشه. یعنی میتونی ویجتهای سفارشی به داشبورد اضافه کنی. وقتی افزونهات آماری داره که میخوای توی داشبورد نشون بدی، wp_dashboard_setup هوک لازمه.
add_action('add_meta_boxes', 'function_name')
هوک add_meta_boxes موقع ساخت متاباکسها توی صفحه ویرایش نوشته اجرا میشه. یعنی جایی که متاباکسهای سفارشی رو ثبت میکنی. وقتی فیلدهای سفارشی برای نوشتهها داری، add_meta_boxes هوک درسته.
add_action('add_meta_boxes_{post_type}', 'function_name')
هوک add_meta_boxes_{post_type} مثل قبلی ولی فقط برای یه تایپ نوشته خاص. یعنی فقط توی صفحه ویرایش فلان تایپ، متاباکس اضافه میکنه. وقتی متاباکس فقط برای محصولات یا یه تایپ خاصه، این هوک دقیقتره.
add_action('restrict_manage_posts', 'function_name')
هوک restrict_manage_posts یه فیلتر کشویی به بالای جدول نوشتهها اضافه میکنه. یعنی میتونی کاربر بتونه نوشتهها رو بر اساس معیار سفارشی فیلتر کنه. وقتی میخوای فیلتر پیشرفته به لیست نوشتهها اضافه کنی، restrict_manage_posts هوک درسته.
هوکهای مربوط به حلقه وردپرس و نمایش پستها
add_action('the_post', 'function_name')
هوک the_post هر بار که وردپرس یه نوشته رو از حلقه برمیداره اجرا میشه. یعنی برای هر نوشته توی حلقه یه بار صدا زده میشه. وقتی میخوای برای هر نوشتهای آمادهسازی خاص انجام بدی، the_post مناسبه.
add_action('loop_start', 'function_name')
هوک loop_start قبل از شروع حلقه وردپرس اجرا میشه. یعنی جایی که میتونی قبل از نمایش لیست نوشتهها کاری انجام بدی. برای اضافه کردن محتوای ابتدای لیست، loop_start کاربردیه.
add_action('loop_end', 'function_name')
هوک loop_end بعد از پایان حلقه وردپرس اجرا میشه. یعنی جایی که لیست نوشتهها تموم شده. برای اضافه کردن محتوای انتهای لیست، loop_end مناسبه.
هوکهای مربوط به بازنشانی رمز عبور و بازیابی حساب
add_action('password_reset', 'function_name')
هوک password_reset موقع بازنشانی رمز عبور اجرا میشه. یعنی وقتی کاربر رمزش رو عوض میکنه، این هوک فعال میشه. برای ارسال اعلان تغییر رمز، password_reset کاربردیه.
add_action('after_password_reset', 'function_name')
هوک after_password_reset بعد از اتمام بازنشانی رمز اجرا میشه. یعنی فرآیند کامل شده. برای کارهای بعد از تغییر رمز، after_password_reset مناسبه.
add_action('retrieve_password', 'function_name')
هوک retrieve_password موقع درخواست بازیابی رمز اجرا میشه. یعنی وقتی کاربر میخواد رمزش رو بازیابی کنه، این هوک صدا زده میشه. برای تغییر متن ایمیل بازیابی، retrieve_password کاربردیه.
add_action('lostpassword_post', 'function_name')
هوک lostpassword_post بعد از ارسال فرم فراموشی رمز اجرا میشه. یعنی وقتی کاربر ایمیلش رو برای بازیابی میده، این هوک فعال میشه. برای اعتبارسنجی اضافه، lostpassword_post مناسبه.
هوکهای مربوط به ثبتنام کاربران جدید
add_action('registration_errors', 'function_name')
هوک registration_errors موقع اعتبارسنجی ثبتنام کاربر جدید اجرا میشه. یعنی میتونی خطاهای سفارشی به فرم ثبتنام اضافه کنی. وقتی میخوای شرایط خاصی برای ثبتنام بذاری، registration_errors هوک درسته.
add_action('register_new_user', 'function_name')
هوک register_new_user بعد از ثبتنام موفق کاربر جدید اجرا میشه. یعنی کاربر ساخته شده و حالا میتونی کارهای بعدی رو انجام بدی. برای ارسال ایمیل خوشآمد یا تنظیمات اولیه، register_new_user مناسبه.
هوکهای مربوط به ویرایشگر و متاباکسهای سفارشی
add_action('edit_form_after_title', 'function_name')
هوک edit_form_after_title بعد از فیلد عنوان توی صفحه ویرایش نوشته اجرا میشه. یعنی میتونی محتوای سفارشی بین عنوان و ادیتور اضافه کنی. برای نمایش راهنما یا فیلد اضافه، edit_form_after_title کاربردیه.
add_action('edit_form_after_editor', 'function_name')
هوک edit_form_after_editor بعد از ادیتور اصلی نوشته اجرا میشه. یعنی میتونی محتوای سفارشی بعد از ادیتور اضافه کنی. برای متاباکسهای غیراستاندارد، edit_form_after_editor مناسبه.
add_action('enqueue_block_editor_assets', 'function_name')
هوک enqueue_block_editor_assets برای بارگذاری اسکریپتها و استایلها توی ویرایشگر بلوکی اجرا میشه. یعنی وقتی ویرایشگر گوتنبرگ فعاله، میتونی فایلهای مخصوصش رو اضافه کنی. برای بلوکهای سفارشی، enqueue_block_editor_assets هوک لازمه.
add_action('enqueue_block_assets', 'function_name')
هوک enqueue_block_assets برای بارگذاری استایلهای بلوکها هم توی ویرایشگر و هم توی نمایش سایت اجرا میشه. یعنی استایلی که باید همهجا باشه. برای استایل بلوکهای سفارشی، enqueue_block_assets مناسبه.
هوکهای مربوط به متادیتا و فیلدهای سفارشی پستها
add_action('updated_post_meta', 'function_name')
هوک updated_post_meta موقع بهروزرسانی یه متادیتای نوشته اجرا میشه. یعنی وقتی مقدار یه فیلد سفارشی عوض میشه، این هوک فعال میشه. برای همگامسازی دادهها، updated_post_meta کاربردیه.
add_action('added_post_meta', 'function_name')
هوک added_post_meta موقع اضافه شدن یه متادیتای جدید اجرا میشه. یعنی وقتی فیلد سفارشی جدیدی ساخته میشه، این هوک صدا زده میشه. برای کارهای اولیه بعد از ساخت متادیتا، added_post_meta مناسبه.
add_action('deleted_post_meta', 'function_name')
هوک deleted_post_meta موقع حذف یه متادیتا اجرا میشه. یعنی وقتی فیلد سفارشی حذف میشه، این هوک فعال میشه. برای پاکسازی دادههای وابسته، deleted_post_meta کاربردیه.
هوکهای مربوط به گزینهها و تنظیمات ذخیرهشده
add_action('update_option_{option_name}', 'function_name')
هوک update_option_{option_name} موقع بهروزرسانی یه گزینه مشخص اجرا میشه. یعنی وقتی فلان تنظیم وردپرس عوض میشه، این هوک صدا زده میشه. برای واکنش به تغییر تنظیمات خاص، update_option_{option_name} عالیه.
هوکهای مربوط به پیوستها و فایلهای رسانهای
add_action('add_attachment', 'function_name')
هوک add_attachment موقع آپلود یه فایل رسانهای جدید اجرا میشه. یعنی وقتی تصویر یا فایلی توی کتابخانه رسانه آپلود میشه، این هوک فعال میشه. برای پردازش خودکار فایلهای آپلودی، add_attachment مناسبه.
add_action('attachment_updated', 'function_name')
هوک attachment_updated موقع بهروزرسانی اطلاعات یه پیوست اجرا میشه. یعنی وقتی مشخصات فایل رسانهای عوض میشه، این هوک صدا زده میشه. برای همگامسازی، attachment_updated کاربردیه.
add_action('edit_attachment', 'function_name')
هوک edit_attachment موقع ویرایش یه پیوست اجرا میشه. یعنی وقتی کاربر اطلاعات فایل رو ویرایش میکنه، این هوک فعال میشه. برای اعتبارسنجی ویرایشها، edit_attachment مناسبه.
add_action('delete_attachment', 'function_name')
هوک delete_attachment موقع حذف یه پیوست اجرا میشه. یعنی وقتی فایل رسانهای حذف میشه، این هوک صدا زده میشه. برای پاکسازی فایلهای وابسته، delete_attachment لازمه.
هوکهای مربوط به احراز هویت و فرآیند ورود کاربران
add_action('wp_authenticate', 'function_name')
هوک wp_authenticate موقع احراز هویت کاربر اجرا میشه. یعنی وقتی کاربر تلاش میکنه وارد بشه، این هوک فعال میشه. برای اعتبارسنجی اضافه قبل از ورود، wp_authenticate مناسبه.
هوکهای مربوط به تجزیه درخواست و کوئریهای وردپرس
add_action('parse_request', 'function_name')
هوک parse_request موقع تجزیه درخواست HTTP اجرا میشه. یعنی وقتی وردپرس درخواست رو میخونه و متغیرها رو میسازه، این هوک فعال میشه. برای تغییر رفتار درخواست، parse_request کاربردیه.
add_action('parse_query', 'function_name')
هوک parse_query موقع تجزیه کوئری اصلی وردپرس اجرا میشه. یعنی وقتی وردپرس میفهمه چه محتوایی باید نمایش بده، این هوک صدا زده میشه. برای تغییر کوئری قبل از اجرا، parse_query مناسبه.
هوکهای مربوط به سایدبار و ناحیههای ابزارک
add_action('dynamic_sidebar_before', 'function_name')
هوک dynamic_sidebar_before قبل از نمایش سایدبار اجرا میشه. یعنی میتونی محتوایی قبل از ویجتهای سایدبار اضافه کنی. برای اضافه کردن المان ابتدایی، dynamic_sidebar_before کاربردیه.
add_action('dynamic_sidebar_after', 'function_name')
هوک dynamic_sidebar_after بعد از نمایش سایدبار اجرا میشه. یعنی میتونی محتوایی بعد از ویجتها اضافه کنی. برای اضافه کردن المان انتهایی، dynamic_sidebar_after مناسبه.
هوکهای مربوط به قالب و فایلهای بخشبندیشده
add_action('get_header', 'function_name')
هوک get_header موقع لود شدن فایل header اجرا میشه. یعنی وقتی هدر سایت داره بارگذاری میشه، این هوک فعال میشه. برای اضافه کردن کد قبل از هدر، get_header کاربردیه.
add_action('get_footer', 'function_name')
هوک get_footer موقع لود شدن فایل footer اجرا میشه. یعنی وقتی فوتر سایت داره بارگذاری میشه، این هوک صدا زده میشه. برای اضافه کردن کد قبل از فوتر، get_footer مناسبه.
add_action('get_sidebar', 'function_name')
هوک get_sidebar موقع لود شدن سایدبار اجرا میشه. یعنی وقتی سایدبار داره بارگذاری میشه، این هوک فعال میشه. برای اضافه کردن کد قبل از سایدبار، get_sidebar کاربردیه.
هوکهای مربوط به نوار ابزار مدیریت وردپرس
add_action('wp_before_admin_bar_render', 'function_name')
هوک wp_before_admin_bar_render قبل از نمایش نوار ابزار مدیریت اجرا میشه. یعنی میتونی آیتمهای نوار ابزار رو قبل از نمایش تغییر بدی. برای حذف آیتمهای پیشفرض، wp_before_admin_bar_render مناسبه.
add_action('wp_after_admin_bar_render', 'function_name')
هوک wp_after_admin_bar_render بعد از نمایش نوار ابزار مدیریت اجرا میشه. یعنی میتونی محتوایی بعد از نوار ابزار اضافه کنی. برای کدهای پایانی نوار ابزار، wp_after_admin_bar_render کاربردیه.
هوکهای مربوط به بهروزرسانی پروفایل کاربران
add_action('personal_options_update', 'function_name')
هوک personal_options_update موقع بهروزرسانی پروفایل خود کاربر اجرا میشه. یعنی وقتی کاربر پروفایل خودش رو ویرایش میکنه، این هوک فعال میشه. برای ذخیره فیلدهای سفارشی پروفایل، personal_options_update مناسبه.
add_action('edit_user_profile_update', 'function_name')
هوک edit_user_profile_update موقع بهروزرسانی پروفایل کاربر دیگه توسط مدیر اجرا میشه. یعنی وقتی مدیر پروفایل کاربری رو ویرایش میکنه، این هوک صدا زده میشه. برای ذخیره فیلدهای سفارشی از سمت مدیر، edit_user_profile_update کاربردیه.
هوکهای مربوط به ترمها و دستهبندیهای سفارشی
add_action('create_term', 'function_name')
هوک create_term موقع ساخت یه ترم جدید مثل دسته یا برچسب اجرا میشه. یعنی وقتی دسته جدیدی ساخته میشه، این هوک فعال میشه. برای کارهای اولیه بعد از ساخت دسته، create_term مناسبه.
add_action('edited_term', 'function_name')
هوک edited_term موقع ویرایش یه ترم اجرا میشه. یعنی وقتی دسته یا برچسب ویرایش میشه، این هوک صدا زده میشه. برای همگامسازی تغییرات، edited_term کاربردیه.
add_action('delete_term', 'function_name')
هوک delete_term موقع حذف یه ترم اجرا میشه. یعنی وقتی دستهای حذف میشه، این هوک فعال میشه. برای پاکسازی دادههای مرتبط، delete_term لازمه.
add_action('created_{taxonomy}', 'function_name')
هوک created_{taxonomy} مثل create_term ولی فقط برای یه taxonomy خاص. یعنی فقط وقتی ترم جدید از فلان دستهبندی ساخته بشه، این هوک فعال میشه.
add_action('edited_{taxonomy}', 'function_name')
هوک edited_{taxonomy} مثل edited_term ولی فقط برای یه taxonomy مشخص. یعنی فقط وقتی ترمهای فلان طبقهبندی ویرایش بشن، این هوک صدا زده میشه.
add_action('delete_{taxonomy}', 'function_name')
هوک delete_{taxonomy} مثل delete_term ولی فقط برای یه taxonomy خاص. یعنی فقط وقتی ترمی از فلان طبقهبندی حذف بشه، این هوک فعال میشه.
هوکهای مربوط به ویرایش سریع و ویرایش گروهی نوشتهها
add_action('quick_edit_custom_box', 'function_name')
هوک quick_edit_custom_box برای اضافه کردن فیلد سفارشی به ویرایش سریع نوشتهها استفاده میشه. یعنی وقتی کاربر از ویرایش سریع استفاده میکنه، فیلدهای تو هم نمایش داده میشن. برای فیلدهای سفارشی که باید سریع ویرایش بشن، quick_edit_custom_box مناسبه.
add_action('bulk_edit_custom_box', 'function_name')
هوک bulk_edit_custom_box برای اضافه کردن فیلد به ویرایش گروهی نوشتهها استفاده میشه. یعنی وقتی کاربر چند نوشته رو با هم ویرایش میکنه، فیلدهای تو هم نشون داده میشن. برای ویرایش گروهی فیلدهای سفارشی، bulk_edit_custom_box کاربردیه.
هوکهای مربوط به درخواستهای HTTP و ارتباطات خارجی
add_action('http_request_args', 'function_name')
هوک http_request_args قبل از ارسال درخواست HTTP اجرا میشه. یعنی میتونی پارامترهای درخواست مثل هدرها و timeout رو تغییر بدی. برای شخصیسازی درخواستهای خارجی، http_request_args مناسبه.
هوکهای مربوط به کش و پاکسازی حافظه
add_action('clean_post_cache', 'function_name')
هوک clean_post_cache موقع پاکسازی کش نوشته اجرا میشه. یعنی وقتی کش یه نوشته پاک میشه، این هوک فعال میشه. برای همگامسازی کش سفارشی، clean_post_cache کاربردیه.
هوکهای مربوط به صفحه ورود و شخصیسازی آن
add_action('login_enqueue_scripts', 'function_name')
هوک login_enqueue_scripts برای بارگذاری اسکریپت و استایل توی صفحه ورود استفاده میشه. یعنی میتونی ظاهر صفحه ورود رو شخصیسازی کنی. برای استایل اختصاصی صفحه ورود، login_enqueue_scripts مناسبه.
add_action('login_head', 'function_name')
هوک login_head توی بخش head صفحه ورود اجرا میشه. یعنی میتونی کد اضافه توی head صفحه ورود بذاری. برای متاتگ یا کدهای خاص، login_head کاربردیه.
add_action('login_footer', 'function_name')
هوک login_footer توی فوتر صفحه ورود اجرا میشه. یعنی میتونی محتوایی انتهای صفحه ورود اضافه کنی. برای اسکریپتهای پایانی صفحه ورود، login_footer مناسبه.
هوکهای مربوط به صفحه جاری و مدیریت Screen در پیشخوان
add_action('current_screen', 'function_name')
هوک current_screen موقع آمادهسازی صفحه جاری پیشخوان اجرا میشه. یعنی میتونی بفهمی که کاربر الان توی چه صفحهای از پیشخوانه. برای بارگذاری شرطی اسکریپتها، current_screen مناسبه.
add_action('admin_head', 'function_name')
هوک admin_head توی بخش head پیشخوان اجرا میشه. یعنی میتونی کد اضافه توی head صفحات مدیریتی بذاری. برای متاتگ یا استایلهای خاص پیشخوان، admin_head کاربردیه.
add_action('admin_footer', 'function_name')
هوک admin_footer توی فوتر پیشخوان اجرا میشه. یعنی میتونی محتوایی انتهای صفحات مدیریتی اضافه کنی. برای اسکریپتهای پایانی پیشخوان، admin_footer مناسبه.
add_action('in_admin_header', 'function_name')
هوک in_admin_header توی بخش ابتدایی هدر پیشخوان اجرا میشه. یعنی میتونی محتوایی بالای صفحات مدیریت اضافه کنی. برای اعلانهای خاص، in_admin_header کاربردیه.
هوکهای مربوط به اعلانها و پیامهای مدیریتی
add_action('all_admin_notices', 'function_name')
هوک all_admin_notices برای نمایش همه اعلانهای مدیریتی اجرا میشه. یعنی میتونی اعلانهایی که توی همه صفحات پیشخوان باید دیده بشن رو اضافه کنی. برای پیامهای سراسری، all_admin_notices مناسبه.
add_action('network_admin_notices', 'function_name')
هوک network_admin_notices برای نمایش اعلانها توی پیشخوان چندسایتی اجرا میشه. یعنی فقط توی مدیریت شبکه فعاله. برای پیامهای مخصوص شبکه، network_admin_notices کاربردیه.
add_action('user_admin_notices', 'function_name')
هوک user_admin_notices برای نمایش اعلانها توی پیشخوان کاربر اجرا میشه. یعنی فقط توی بخش مدیریت کاربر فعاله. برای پیامهای مخصوص کاربر، user_admin_notices مناسبه.
هوکهای مربوط به اسکریپت و استایل در بخشهای مختلف
add_action('admin_print_scripts', 'function_name')
هوک admin_print_scripts موقع چاپ اسکریپتها توی پیشخوان اجرا میشه. یعنی میتونی اسکریپتها رو مستقیم توی هدر پیشخوان چاپ کنی. برای اسکریپتهای ضروری اولیه، admin_print_scripts کاربردیه.
add_action('admin_print_styles', 'function_name')
هوک admin_print_styles موقع چاپ استایلها توی پیشخوان اجرا میشه. یعنی میتونی استایلها رو مستقیم توی هدر پیشخوان چاپ کنی. برای استایلهای ضروری اولیه، admin_print_styles مناسبه.
add_action('wp_print_scripts', 'function_name')
هوک wp_print_scripts موقع چاپ اسکریپتها توی سایت اجرا میشه. یعنی میتونی اسکریپتها رو مستقیم توی هدر سایت چاپ کنی. برای اسکریپتهای ضروری سایت، wp_print_scripts کاربردیه.
add_action('wp_print_styles', 'function_name')
هوک wp_print_styles موقع چاپ استایلها توی سایت اجرا میشه. یعنی میتونی استایلها رو مستقیم توی هدر سایت چاپ کنی. برای استایلهای ضروری سایت، wp_print_styles مناسبه.
هوکهای متفرقه و کاربردی وردپرس
add_action('shutdown', 'function_name')
هوک shutdown موقع پایان کامل اجرای PHP اجرا میشه. یعنی وقتی همه چیز تموم شده و صفحه داره بسته میشه. برای کارهای نهایی مثل ثبت لاگ یا پاکسازی موقت، shutdown کاربردیه.
add_action('wp_terms_checklist_args', 'function_name')
هوک wp_terms_checklist_args موقع ساخت چکلیست دستهها توی ویرایشگر اجرا میشه. یعنی میتونی آرگومانهای نمایش دستهها رو تغییر بدی. برای شخصیسازی بخش دستهبندی نوشته، wp_terms_checklist_args مناسبه.
توابع مشترک PHP و وردپرس برای مدیریت خروجی و بافر
()ob_start
خروجی بافر رو فعال میکنه. یعنی هر چیزی که قرار بود مستقیم چاپ بشه، بهجاش توی حافظه جمع میشه. وقتی میخوای خروجی یه بخش رو بگیره و بعد پردازشش کنی، ob_start شروع کاره.
()ob_get_clean
محتوای بافر شده رو برمیگردونه و بافر رو پاک میکنه. یعنی هر چیزی که از زمان ob_start جمع شده رو میگیری و تمیزش میکنی. وقتی خروجی رو برای پردازش یا ذخیرهسازی میخوای، ob_get_clean لازمه.
متغیرهای سراسری و خواص استاتیک
global $wp_roles , $post , $wpdb
global برای دسترسی به متغیرهای سراسری وردپرس داخل توابع استفاده میشه. $wp_roles نقشهای کاربری، $post نوشته جاری و $wpdb شیء دیتابیس رو در دسترس میذاره. وقتی داخل تابع نیاز به این متغیرها داری، باید اول با global معرفیشون کنی.
تگهای HTML و فرمهای استاندارد
form method="post" action="options.php"
ساختار استاندارد فرم تنظیمات وردپرسه. یعنی فرمی که دادهها رو با متد POST به فایل options.php میفرسته که وردپرس پردازشش میکنه. وقتی با API تنظیمات کار میکنی، فرم باید دقیقاً همین ساختار رو داشته باشه.
form method="get" action="options.php"
مثل قبلی ولی با متد GET. البته توی وردپرس برای ذخیره تنظیمات معمولاً از POST استفاده میشه و این ساختار کمتر رایجه. وقتی فقط میخوای دادهها رو بخونی و چیزی ذخیره نشه، میتونی از GET استفاده کنی.
توابع عمومی PHP برای کار با رشتهها و متن
()sprintf
یه رشته متنی رو با مقادیر مشخصی که بهش میدی میسازه و برمیگردونه. یعنی یه قالب متنی داری که توش placeholder گذاشتی و sprintf اونها رو با مقادیر واقعی جایگزین میکنه. وقتی میخوای یه پیام داینامیک مثل “سلام کاربر عزیز، ۳ پیام جدید داری” رو بسازی، sprintf خیلی تمیزتر از چسبوندن رشتهها با نقطهست.
()printf
دقیقاً مثل sprintf کار میکنه، ولی خروجی رو مستقیم چاپ میکنه. یعنی لازم نیست echo جداگانه بزنی. وقتی فقط میخوای یه متن داینامیک رو نمایش بدی و نیازی به ذخیرهش نداری، printf سریعتره.
()strpos
موقعیت اولین occurrence یه رشته کوچیک رو داخل یه رشته بزرگتر پیدا میکنه. یعنی میتونی بفهمی که فلان کلمه توی فلان متن هست یا نه و دقیقاً از کجا شروع میشه. وقتی میخوای بررسی کنی که یه مقدار شامل یه عبارت خاص هست یا نه، strpos پایهایترین راهه.
()str_replace
یه عبارت مشخص رو توی یه متن پیدا میکنه و با یه عبارت دیگه جایگزین میکنه. یعنی میتونی همه “سلام” ها رو توی یه متن به “درود” تبدیل کنی. وقتی میخوای متنی رو پاکسازی یا شخصیسازی کنی، str_replace همیشه بهدرد میخوره.
()substr
بخشی از یه رشته رو برمیگردونه. یعنی میتونی از یه متن طولانی، فقط چند کاراکتر از یه نقطه مشخص به بعد رو برداری. وقتی میخوای خلاصهای از متن بسازی یا بخش خاصی از یه رشته رو جدا کنی، substr انتخابه.
()trim
فاصلههای خالی ابتدا و انتهای یه رشته رو حذف میکنه. وقتی کاربر توی فرم متنی وارد میکنه، معمولاً فاصلههای اضافه داره که trim تمیزش میکنه. این تابع برای پاکسازی ورودیها قبل از ذخیرهسازی واقعاً ضروریه.
()ltrim
فقط فاصلههای ابتدای یه رشته رو حذف میکنه. یعنی اگه بخوای فاصلههای سمت چپ یا ابتدای متن پاک بشه ولی انتهای متن دست نخوره، ltrim همون کاریه که لازم داری. توی پاکسازی ورودیهای خاص که فاصله انتهایی مهمه، کاربردیه.
()str_repeat
یه رشته مشخص رو چند بار تکرار میکنه. یعنی میتونی یه کاراکتر یا متن رو به تعداد دلخواه پشت سر هم بذاری. وقتی لازم داری یه خط جداکننده یا الگوی تکراری بسازی، str_repeat سریعترین راهه.
()str_pad
طول یه رشته رو به اندازه مشخصی میرسونه و با کاراکتر دلخواه پر میکنه. یعنی اگه متنی کوتاهتر از حد انتظار باشه، میتونی بقیهش رو با صفر یا فاصله پر کنی. وقتی با شمارهها و کدهای استاندارد کار میکنی، str_pad خیلی مفیده.
()strtolower
همه حروف یه رشته رو به حروف کوچیک تبدیل میکنه. وقتی میخوای متنی رو برای مقایسه یا ذخیرهسازی یکسانسازی کنی، strtolower سادهترین راهه. مثلاً ایمیلها رو معمولاً قبل از ذخیره با این تابع کوچیک میکنن.
()ucfirst
فقط حرف اول یه رشته رو بزرگ میکنه. وقتی میخوای یه کلمه یا جمله رو با حرف بزرگ شروع کنی، ucfirst سریع انجامش میده. توی نمایش عنوانها و نامها کاربردیه.
()mb_substr
مثل substr عمل میکنه، ولی برای متنهای چندزبانه مثل فارسی که کاراکترهای چندبایتی دارن ساخته شده. یعنی اگه با متن فارسی کار میکنی و میخوای بخشی ازش رو ببری، حتماً باید از mb_substr استفاده کنی وگرنه کاراکترها خراب میشن.
()explode
یه رشته رو بر اساس یه جداکننده مشخص به آرایه تبدیل میکنه. مثلاً یه متن که با کاما جدا شده رو میتونی به آرایهای از کلمات تبدیل کنی. وقتی میخوای دادهای که بهصورت متنی اومده رو پردازش کنی، explode همیشه لازمه.
()implode
دقیقاً برعکس explode عمل میکنه. یعنی یه آرایه رو با یه جداکننده مشخص به یه رشته متنی تبدیل میکنه. وقتی میخوای آرایهای از مقادیر رو برای ذخیرهسازی یا نمایش به یه رشته تبدیل کنی، implode انتخابه.
()preg_match
یه الگوی regex رو روی یه متن بررسی میکنه و میگه که آیا تطابقی وجود داره یا نه. این تابع از strpos قدرتمندتره چون میتونه الگوهای پیچیده رو تشخیص بده. وقتی میخوای فرمت یه ایمیل، شماره تماس یا هر الگوی خاصی رو اعتبارسنجی کنی، preg_match بهترین راهه.
()preg_quote
کاراکترهای خاص regex توی یه رشته رو بیاثر میکنه. یعنی اگه میخوای متنی که شامل کاراکترهای خاصه رو بهعنوان بخشی از الگو استفاده کنی، اول باید با preg_quote امنش کنی. این تابع جلوی خطاهای غیرمنتظره توی regex رو میگیره.
()urlencode
یه رشته رو برای قرار گرفتن توی URL امن میکنه. یعنی کاراکترهای خاص مثل فاصله و علامت سوال رو به فرمت قابل انتقال تبدیل میکنه. وقتی میخوای متنی رو بهعنوان پارامتر توی لینک بفرستی، urlencode ضروریه.
()html_entity_decode
html_entity_decode entity های HTML مثل & رو به کاراکترهای اصلیشون تبدیل میکنه. یعنی اگه متنی داری که توش کاراکترهای خاص بهصورت کد ذخیره شدن، html_entity_decode اونها رو برمیگردونه. وقتی میخوای متنی که قبلاً امنسازی شده رو دوباره بخونی، این تابع کاربردیه.
توابع عمومی PHP برای کار با آرایهها
()array
برای ساخت یه آرایه جدید توی PHP استفاده میشه. آرایه یعنی یه مجموعه از مقادیر که میتونی به هر کدوم یه کلید اختصاص بدی. وقتی میخوای چند مقدار مرتبط رو یهجا نگه داری و بعداً بهشون دسترسی داشته باشی، array پایهایترین راهه.
()array_unshift
یک یا چند مقدار جدید به ابتدای یه آرایه اضافه میکنه. یعنی عنصر جدید میاد اول صف و بقیه میرن عقب. وقتی میخوای یه آیتم رو قبل از بقیه قرار بدی، array_unshift دقیقاً همین کار رو میکنه.
()array_filter
عناصر یه آرایه رو بر اساس یه شرط مشخص فیلتر میکنه. یعنی میتونی فقط عناصری که شرط رو پاس میکنن نگه داری و بقیه حذف بشن. وقتی میخوای آرایهای رو تمیز کنی و فقط مقادیر معتبر بمونن، array_filter خیلی مفیده.
()array_map
یه تابع رو روی تکتک عناصر یه آرایه اعمال میکنه و آرایه جدید از نتایج میسازه. یعنی میتونی همه عناصر رو یهجا پردازش کنی بدون حلقه دستی. وقتی میخوای آرایهای رو تبدیل یا تمیز کنی، array_map کد رو خیلی جمعوجور میکنه.
()array_pop
آخرین عنصر یه آرایه رو حذف میکنه و برمیگردونه. یعنی مثل برداشتن آخرین کارت از یه دسته کارت. وقتی میخوای عناصر رو از انتها پردازش کنی و حذفشون کنی، array_pop راه درستیه.
()array_unique
مقادیر تکراری یه آرایه رو حذف میکنه و فقط مقادیر یکتا رو نگه میداره. وقتی آرایهای داری که ممکنه چند بار یه مقدار توش تکرار شده باشه، array_unique تمیزش میکنه.
()array_diff
تفاوت بین دو آرایه رو برمیگردونه. یعنی عناصری که توی آرایه اول هستن ولی توی آرایه دوم نیستن. وقتی میخوای بفهمی چه چیزهایی از یه لیست حذف شدن یا اضافه شدن، array_diff کمکت میکنه.
()array_slice
بخشی از یه آرایه رو مثل برش یه تیکه از کیک برمیگردونه. میتونی مشخص کنی از کجا شروع کنه و چند عنصر برداره. وقتی فقط به بخشی از یه آرایه بزرگ نیاز داری، array_slice انتخابه.
()count
تعداد عناصر یه آرایه رو برمیگردونه. وقتی میخوای بدونی یه لیست چند تا آیتم داره یا شرطی روی تعداد بذاری، count سادهترین و پرکاربردترین تابعه.
()in_array
بررسی میکنه که یه مقدار مشخص توی یه آرایه وجود داره یا نه. خروجیش true یا false هست. وقتی میخوای چک کنی که فلان مقدار توی لیست هست یا نه، in_array سریعترین راهه.
()extract
کلیدهای یه آرایه رو به متغیرهای مستقل تبدیل میکنه. یعنی اگه آرایهای داری که کلیدش “name” هست، بعد از extract یه متغیر به اسم name$ داری. البته باید خیلی بادقت استفاده بشه چون میتونه متغیرهای موجود رو تغییر بده.
توابع امنیتی و رمزنگاری در PHP
()random_int
یه عدد تصادفی امن تولید میکنه. یعنی برخلاف توابع تصادفی قدیمی، خروجیش واقعاً غیرقابل پیشبینیه. وقتی برای ساخت توکن، کد تایید یا رمز عبور به عدد تصادفی امن نیاز داری، random_int بهترین انتخابه.
()hash
یه رشته رو با الگوریتم مشخص مثل SHA256 به یه مقدار هش تبدیل میکنه. یعنی یه خروجی با طول ثابت از ورودی میسازه که قابل برگشت نیست. وقتی میخوای داده حساس رو بهصورت امن ذخیره کنی یا یه امضا بسازی، hash کاربردیه.
()hash_equals
دو مقدار هش رو با هم مقایسه میکنه بدون این که در برابر حملات زمانبندی آسیبپذیر باشه. یعنی مقایسه امن که زمانش برای هر دو مقدار یکسانه. وقتی میخوای یه توکن یا امضا رو اعتبارسنجی کنی، hash_equals راه درسته.
()md5
یه الگوریتم هش قدیمی که یه رشته ۳۲ کاراکتری از ورودی میسازه. این الگوریتم دیگه برای رمزنگاری امن توصیه نمیشه، ولی برای ساخت شناسههای یکتا یا checksum هنوز استفاده میشه. وقتی فقط یه شناسه سریع از یه متن میخوای، md5 هنوز کار میکنه.
توابع PHP برای کار با فایل، مسیر و سیستم فایل
require_once
یه فایل PHP رو بارگذاری میکنه و اگه قبلاً بارگذاری شده باشه، دوباره انجامش نمیده. این دستور اگه فایل وجود نداشته باشه، خطای fatal میده و اجرا متوقف میشه. وقتی به یه فایل وابستهای که حتماً باید باشه، require_once بهترین انتخابه.
include_once
مثل require_once یه فایل رو فقط یه بار بارگذاری میکنه، ولی اگه فایل نباشه فقط اخطار میده و اجرا ادامه پیدا میکنه. وقتی فایل اختیاریه و نبودنش مشکلی ایجاد نمیکنه، include_once مناسبتره.
include
یه فایل PHP رو بارگذاری میکنه. اگه فایل نباشه، فقط یه اخطار میده و بقیه کد اجرا میشه. وقتی میخوای یه بخش از قالب یا افزونه رو جدا کنی و هر جا لازم داشتی بارگذاری کنی، include کاربردیه.
__DIR__
مسیر کامل پوشهای که فایل PHP فعلی توش قرار داره رو برمیگردونه. این ثابت جادویی PHP خیلی مفیده چون لازم نیست مسیر رو دستی بنویسی. وقتی میخوای به فایلهای همپوشه یا زیرپوشه دسترسی داشته باشی، DIR نقطه شروع درستیه.
__FILE__
مسیر کامل خود فایل PHP فعلی رو برمیگردونه. یعنی دقیقاً میفهمی که این فایل کجای سروره. وقتی میخوای مسیر فایل رو برای عملیات خاص مثل ثبت هوک فعالسازی استفاده کنی، FILE لازمه.
()basename
اسم فایل رو از یه مسیر کامل جدا میکنه. یعنی اگه مسیر طولانی مثل /home/user/file.php رو بدی، فقط file.php رو برمیگردونه. وقتی فقط نام فایل یا پوشه انتهایی رو میخوای، basename سادهترین راهه.
()realpath
مسیر نسبی رو به مسیر کامل و واقعی تبدیل میکنه. یعنی همه “../” ها و “./” ها رو حل میکنه و مسیر نهایی رو میده. وقتی میخوای مطمئن بشی که یه فایل واقعاً کجاست، realpath دقیق جواب میده.
()file_get_contents
کل محتوای یه فایل رو بهصورت رشته برمیگردونه. یعنی میتونی یه فایل متنی، HTML یا هر محتوای دیگه رو سریع بخونی. وقتی میخوای محتوای یه فایل رو پردازش کنی یا ذخیره کنی، file_get_contents انتخابه.
()filemtime
زمان آخرین تغییر یه فایل رو بهصورت timestamp برمیگردونه. وقتی میخوای بفهمی یه فایل کی ویرایش شده یا برای مدیریت کش نیاز به زمان تغییر فایل داری، filemtime دقیقاً همون چیزیه که لازم داری.
()pathinfo
اطلاعات مختلف یه مسیر فایل مثل نام، پسوند و پوشه رو جدا میکنه. یعنی میتونی بفهمی که فلان فایل چه پسوندی داره یا توی چه پوشهایه. وقتی با فایلهای آپلودی کار میکنی، pathinfo خیلی کمک میکنه.
()glob
فایلهایی که با یه الگوی مشخص مطابقت دارن رو پیدا میکنه. مثلاً میتونی همه فایلهای txt یه پوشه رو لیست کنی. وقتی میخوای چند فایل رو بر اساس الگو پیدا و پردازش کنی، glob سریعترین راهه.
توابع PHP برای مدیریت زمان، تاریخ و Timestamp
()time
زمان فعلی رو بهصورت timestamp یونیکس برمیگردونه. یعنی تعداد ثانیههایی که از اول ژانویه ۱۹۷۰ گذشته. وقتی میخوای زمان فعلی رو برای مقایسه، ذخیره یا محاسبه داشته باشی، time پایهایترین تابعه.
()strtotime
یه متن تاریخ قابل فهم مثل “next Monday” یا “2024-01-01” رو به timestamp تبدیل میکنه. یعنی میتونی تاریخهای متنی رو به عدد تبدیل کنی و روشون محاسبه انجام بدی. وقتی با تاریخهای ورودی کاربر کار میکنی، strtotime خیلی کاربردیه.
()format
متد کلاس DateTime در PHP هست که یه شیء تاریخ رو با فرمت دلخواه به رشته تبدیل میکنه. یعنی میتونی تاریخ رو به شکل “۱۴۰۳/۰۵/۱۵” یا هر فرمت دیگهای دربیاری. وقتی میخوای تاریخ رو برای نمایش به کاربر آماده کنی، format همون چیزیه که لازم داری.
()new DateTimeZone
یه منطقه زمانی مشخص میسازه که میتونی به شیء DateTime بدی. یعنی میتونی تاریخها رو بر اساس منطقه زمانی خاصی مثل “Asia/Tehran” پردازش کنی. وقتی سایتت کاربرای بینالمللی داره یا میخوای زمان درست با منطقه زمانی مشخص نشون بدی، new DateTimeZone ضروریه.
توابع برنامهنویسی شیءگرا و الگوهای طراحی در PHP
class extends
توی PHP وقتی میخوای یه کلاس جدید بر اساس یه کلاس دیگه بسازی، از class extends استفاده میکنی. یعنی میگی این کلاس جدید، همه ویژگیها و رفتارهای کلاس قبلی رو داره، بهعلاوهی چیزهای جدیدی که خودم اضافه میکنم. توی وردپرس وقتی میخوای از کلاسهای هسته مثل WP_Widget یا WP_Customize_Control ارثبری کنی و رفتارشون رو شخصیسازی کنی، دقیقاً همین کار رو میکنی. اینطوری لازم نیست همه چیز رو از صفر بنویسی.
__()construct
یه متد خاص توی کلاسه که دقیقاً وقتی یه شیء جدید از اون کلاس ساخته میشه، بهصورت خودکار اجرا میشه. کاربردش اینه که مقادیر اولیه رو ست کنی یا کارهای آمادهسازی رو همون اول انجام بدی. مثلاً توی یه کلاس سفارشی وردپرس، __construct جاییه که تعیین میکنی این کلاس قراره به کدوم هوک وصل بشه یا چه تنظیماتی رو از دیتابیس بخونه.
parent::__()construct
وقتی یه کلاس از کلاس دیگه ارثبری میکنه، ممکنه کلاس والد خودش هم یه __construct داشته باشه که کارهای مهمی انجام میده. با parent::__construct میگی که اول متد سازنده کلاس والد اجرا بشه، بعد ادامه کار کلاس جدید. توی وردپرس وقتی از کلاسهای هسته ارثبری میکنی، خیلی وقتها لازمه که این رو صدا بزنی تا رفتار اصلی کلاس والد از بین نره.
public, private, protected
این سه تا مشخص میکنن که یه متد یا ویژگی توی کلاس، از کجاها قابل دسترسه. public یعنی همه میتونن بهش دسترسی داشته باشن، private یعنی فقط خود کلاس میتونه ببینتش، و protected یعنی خود کلاس و کلاسهایی که ازش ارثبری میکنن. توی وردپرس وقتی افزونه میسازی، این سطح دسترسیها بهت کمک میکنه که بخشهای داخلی کلاس رو مخفی نگه داری و فقط چیزهایی که لازمه رو در اختیار بقیه بذاری.
trait
یه راهی برای استفاده مجدد از کد توی کلاسهای مختلفه، بدون این که مجبور باشی از ارثبری استفاده کنی. یعنی یه سری متد رو داخل trait تعریف میکنی و بعد توی هر کلاسی که لازم داشتی، اون رو وارد میکنی. توی وردپرس وقتی چند کلاس سفارشی داری که همگی یه سری کار مشترک انجام میدن، trait از تکرار کد جلوگیری میکنه و کد رو تمیزتر نگه میداره.
__CLASS__
یه ثابت جادویی توی PHP هست که اسم کلاس فعلی رو برمیگردونه. یعنی هر جا داخل کلاس ازش استفاده کنی، بدون این که دستی اسم کلاس رو بنویسی، PHP خودش میدونه اسم چیه. توی وردپرس وقتی داری هوک ثبت میکنی یا پیام خطا میدی، CLASS بهت کمک میکنه اسم کلاس رو بهصورت خودکار توی کد بیاری.
()get_class
تابع get_class اسم کلاس یه شیء رو بهت میده. وقتی یه نمونه از کلاس داری و میخوای بدونی دقیقاً از کدوم کلاس ساخته شده، این تابع جواب رو میده. توی وردپرس موقع دیباگ یا وقتی داری بررسی میکنی که یه متغیر واقعاً از کدوم کلاسه، get_class خیلی کمک میکنه.
()method_exists
چک میکنه که یه متد خاص توی یه کلاس یا شیء وجود داره یا نه. این تابع قبل از صدا زدن متد، بهت اطمینان میده که اشتباهی چیزی رو صدا نمیزنی که وجود نداره. توی وردپرس وقتی با کلاسهای افزونههای دیگه کار میکنی و نمیدونی اون متد رو دارن یا نه، method_exists از خطای fatal جلوگیری میکنه.
()class_exists
بررسی میکنه که اصلاً یه کلاس مشخص توی PHP تعریف شده یا نه. این تابع وقتی کاربردیه که میخوای از یه کلاس افزونه دیگه استفاده کنی، ولی مطمئن نیستی اون افزونه فعاله. توی وردپرس قبل از اینکه چیزی رو صدا بزنی، با class_exists مطمئن میشی که کلاس موردنظر در دسترسه.
()is_object
فقط میگه که یه متغیر از نوع شیء هست یا نه. یعنی آیا این متغیر از یه کلاس ساخته شده یا یه مقدار معمولی مثل عدد و رشتهست. توی وردپرس وقتی با دادههایی کار میکنی که ممکنه خروجیشون یا شیء باشه یا آرایه، is_object بهت کمک میکنه قبل از دسترسی به ویژگیها مطمئن بشی که با شیء طرفی.
()is_a
چک میکنه که یه شیء از یه کلاس خاص هست یا از کلاسی که ازش ارثبری کرده. یعنی میتونی بپرسی که این شیء آیا از نوع WP_Widget هست یا نه. توی وردپرس وقتی داری بررسی میکنی که یه شیء خاص توی چرخه اجرا دقیقاً چه نوعیه، is_a خیلی دقیقتر از get_class عمل میکنه.
()is_callable
مشخص میکنه که یه متد یا تابع مشخص اصلاً قابل صدا زدن هست یا نه. یعنی علاوه بر اینکه وجود داره، میشه اجراش کرد. توی وردپرس وقتی میخوای یه هوک یا متد رو صدا بزنی و نمیدونی اون تابع واقعاً در دسترسه، is_callable مثل یه محافظ جلوی خطاهای غیرمنتظره رو میگیره.
static $instance = null
این الگو برای ساخت کلاسهای تکنمونهای یا Singleton استفاده میشه. static $instance یعنی یه متغیر ثابت داخل کلاس که قراره فقط یه نمونه از کلاس توش نگه داشته بشه. وقتی این مقدار null باشه، یعنی هنوز هیچ نمونهای ساخته نشده. توی وردپرس خیلی از افزونههای حرفهای از این الگو استفاده میکنن تا مطمئن بشن توی کل اجرای وردپرس فقط یه نمونه از کلاس اصلی افزونه ساخته میشه و منابع الکی مصرف نمیشه.
self::$instance
روش دسترسی به همون متغیر استاتیک داخل خود کلاسه. وقتی توی متدهای کلاس میخوای به instance$ دسترسی داشته باشی، باید با self::$instance صداش بزنی. توی الگوی Singleton که بالاتر گفتم، اول چک میکنی که اگه self::$instance خالی بود، یه نمونه جدید بسازی و توش ذخیره کنی؛ بعد هر جای دیگه که لازم داشتی، همون نمونه قبلی رو برگردونی.
توابع PHP برای مدیریت نشست، کوکی و Session
()session_id
توی PHP مفهومی به اسم نشست یا session داریم که یعنی یه فضای موقت برای نگهداشتن اطلاعات کاربر توی سرور. هر نشست یه شناسه یکتا داره که با session_id میتونی اون رو بخونی یا حتی قبل از شروع نشست، یه شناسه دلخواه براش مشخص کنی. توی وردپرس خودش خیلی کم پیش میاد مستقیم با session کار کنی، ولی وقتی افزونهای میسازی که نیاز داره اطلاعات موقت کاربر مثل مراحل خرید یا فرم چندمرحلهای رو نگه داره، session_id بهت کمک میکنه همون نشست درست رو مدیریت کنی.
()session_status
قبل از اینکه بخوای با نشست کار کنی، باید بدونی که اصلاً نشستی فعال هست یا نه. session_status دقیقاً همین رو میگه؛ آیا نشست شروع شده، غیرفعاله یا اصلاً وجود نداره. این تابع جلوی خیلی از خطاها رو میگیره، چون اگه بدون بررسی بخوای نشست جدید شروع کنی و یکی از قبل فعال باشه، PHP بهت اخطار میده. توی وردپرس هم وقتی توی قالب یا افزونه قراره session به کار ببری، اول باید وضعیتش رو با session_status چک کنی.
()session_start
همون کلیدی هست که نشست رو روشن میکنه. تا این تابع صدا زده نشه، عملاً نمیتونی از SESSION_$ استفاده کنی یا چیزی توش ذخیره کنی. توی وردپرس اگه بخوای اطلاعات موقت مثل وضعیت سبد خرید یا مرحله فعلی کاربر توی یه فرم رو نگه داری، باید اول session_start رو اجرا کنی. البته باید حواست باشه که این کار رو قبل از هر خروجی HTML انجام بدی، وگرنه به مشکل میخوری.
()setcookie
کوکی یه فایل خیلی کوچیکه که توی مرورگر کاربر ذخیره میشه و setcookie دقیقاً برای ساختن همین کوکیها استفاده میشه. باهاش میتونی یه مقدار رو برای مدت مشخصی توی مرورگر نگه داری که دفعه بعدی که کاربر برگشت، بشناسیش. توی وردپرس کلی کوکی برای ورود، سبد خرید یا تنظیمات موقت وجود داره که پایهاش همینه. setcookie بهت اجازه میده که کوکی سفارشی خودت رو بسازی و تاریخ انقضا و مسیرش رو هم مشخص کنی.
توابع PHP برای اعتبارسنجی، تبدیل نوع داده و پردازش مقادیر
exit
وقتی برنامه به exit میرسه، یعنی دیگه تمومه. هیچ کدی بعد از اون اجرا نمیشه و PHP همونجا کار رو متوقف میکنه. فرض کن داری یه سری عملیات توی وردپرس انجام میدی و وسط کار متوجه میشی که کاربر اجازه دیدن این بخش رو نداره؛ اینجاست که exit رو صدا میزنی تا مطمئن بشی هیچ خروجی اضافهای رد و بدل نمیشه. توی توسعه قالب و افزونه، وقتی میخوای مطمئن بشی که فایل مستقیم باز نمیشه یا بعد از wp_die دیگه چیزی اجرا نشه، exit بهترین راهه.
()define
توی PHP یه تابعی هست به اسم define که باهاش یه ثابت میسازی. ثابت یعنی یه مقداری که یه بار تعریفش میکنی و دیگه توی کل پروژه نمیتونی عوضش کنی. توی وردپرس خودش کلی ثابت داره که معروفترینش WP_DEBUG هست؛ این که حالت خطایابی فعال باشه یا نه، دقیقاً با define مشخص میشه. پس هر جا خواستی یه مسیر مشخص، یه آدرس ثابت یا یه تنظیم سراسری داشته باشی که همه جا یکسان بمونه، define همون چیزیه که لازم داری.
()empty
بهت میگه که یه متغیر واقعاً خالیه یا نه. خالی یعنی یا اصلاً وجود نداره، یا مقدارش صفره، یا یه رشته خالیِ، یا false و null. این تابع وقتی به درد میخوره که کاربر یه فرم رو فرستاده و تو میخوای مطمئن بشی که واقعاً چیزی توی فیلد نوشته، نه اینکه فقط یه فضای خالی یا صفر فرستاده باشه. توی وردپرس هم وقتی با _POST یا _GET کار میکنی، empty جلوی خیلی از خطاها رو میگیره.
()isset
فقط یه کار میکنه؛ چک میکنه که متغیر اصلاً وجود داره یا نه و مقدارش هم null نیست. فرقش با empty اینه که اگه مقدار متغیر صفر باشه یا رشته خالی، isset میگه آره، این متغیر هست. بیشترین استفادهش هم وقتیه که میخوای از آدرس صفحه یا فرم یه چیزی بخونی، ولی مطمئن نیستی که اون کلید واقعاً ارسال شده یا نه. توی وردپرس قبل از خوندن پارامترها از URL یا تنظیمات، isset مثل یه محافظ عمل میکنه.
()unset
یه وقتایی لازمه یه متغیر یا یه عضو از آرایه رو کامل حذف کنی؛ این کار رو unset انجام میده. بعد از صدا زدنش، دیگه اون متغیر انگار وجود نداشته. توی وردپرس وقتی حلقههای سنگین داری یا یه سری داده کش شده رو نمیخوای توی حافظه نمونه، unset کمک میکنه حافظه آزاد بشه و سرعت بهتر بشه.
()is_null
دقیقاً میگه که مقدار متغیر null هست یا نه. خیلیها null رو با صفر یا رشته خالی اشتباه میگیرن، ولی null یعنی هیچیِ مطلق. توی وردپرس وقتی میخوای بررسی کنی که یه متادیتا اصلاً ذخیره شده یا نه، is_null جواب درست رو بهت میده.
()is_numeric
اگه بخوای مطمئن بشی که یه مقدار واقعاً عدده یا حداقل یه رشته عددی مثل “25” هست، باید بری سراغ is_numeric. این تابع توی وردپرس خیلی کاربردیه، مخصوصاً وقتی داری با شناسه پست یا آیدی کاربر سروکار داری و نمیخوای یه متن الکی وارد عملیات عددی بشه.
()filter_var
یه ابزار همهکاره برای اعتبارسنجی و تمیز کردن دادههاست. میتونی باهاش ایمیل چک کنی، URL رو بررسی کنی یا یه عدد رو از بین یه سری متن بیرون بکشی. توی وردپرس که بیشتر با توابع داخلی خودش کار میکنی، اما وقتی یه ورودی از جای دیگه میاد و میخوای سریع مطمئن شی که سالمه، filter_var عالیه.
()floatval
هر مقدار ورودی رو به عدد اعشاری تبدیل میکنه و اگه چیزی عددی نباشه، صفر برمیگردونه. وقتی با قیمت، وزن، درصد یا هر مقداری که ممیز داره سر و کار داری، floatval کمک میکنه که دقیقاً همون چیزی که میخوای رو از ورودی بگیری.
()intval
مقدار رو به عدد صحیح تبدیل میکنه و بخش اعشاری و متنهای اضافه رو حذف میکنه. توی وردپرس مخصوصاً وقتی یه ID از URL میاد و نمیخوای چیز اضافهای واردش بشه، intval بهترین راه برای تمیز کردن عدده.
()number_format
اعداد رو برای نمایش به کاربر خواناتر میکنه؛ جداکننده هزارگان میذاره و میتونی مشخص کنی چند رقم اعشار داشته باشه. وقتی توی وردپرس یه قیمت یا یه عدد بزرگ از دیتابیس میاد و میخوای توی قالب تمیز نشونش بدی، number_format همون کاری رو میکنه که کاربر انتظار داره.
()ceil
عدد رو همیشه به بالا گرد میکنه؛ حتی اگه 4.1 باشه، میشه 5. این تابع وقتی به درد میخوره که نمیتونی یه مقدار رو نصفه و نیمه داشته باشی؛ مثلاً تعداد صفحات یه لیست رو حساب میکنی و مطمئنی که کم نیاد. توی وردپرس برای صفحهبندی سفارشی خیلی استفاده میشه.
()round
همون گرد کردن معمولی ریاضی رو انجام میده؛ اگه اعشار پنج دهم به بالا باشه میره بالا، وگرنه میاد پایین. میتونی مشخص کنی که چند رقم اعشار باقی بمونه. توی وردپرس برای نمایش امتیاز یا معدل دیدگاهها خیلی بهدرد میخوره.
()pow
یه عدد رو به توان یه عدد دیگه میرسونه. شاید توی وردپرس روزانه باهاش سروکار نداشته باشی، ولی وقتی بخوای یه محاسبه سفارشی مثل مساحت یا افزایش نمایی انجام بدی، pow همون تابعیه که باید صدا بزنی.
()json_encode
آرایهها و اشیای PHP رو به یه رشته JSON تبدیل میکنه که جاوااسکریپت و سرویسهای دیگه راحت بفهمن. توی وردپرس هر جا بخوای داده به سمت اسکریپت یا AJAX بفرستی، json_encode یه بخش جداییناپذیر از کاره.
()ini_set
تنظیمات PHP رو در لحظه عوض میکنه؛ مثلاً میتونی زمان اجرای اسکریپت رو بیشتر کنی یا حجم آپلود رو موقتاً بالا ببری. توی وردپرس بعضی وقتا هاست محدودیت داره و تو با ini_set سعی میکنی اون محدودیت رو برای همون لحظه تغییر بدی.
()error_log
یه پیام رو به فایل لاگ PHP میفرسته تا بعداً بررسیاش کنی. این تابع وقتی عالیه که نمیخوای خطا رو کاربر ببینه، ولی خودت باید بدون چی شده. توی وردپرس وقتی WP_DEBUG_LOG فعاله، error_log بهت اجازه میده اطلاعات دقیق از مشکل داشته باشی.
()phpversion
نسخه فعلی PHP روی سرور رو نشون میده. توی افزونهها وقتی میخوای مطمئن بشی یه قابلیت خاص توی نسخه PHP کاربر فعاله یا نه، phpversion بهت کمک میکنه سازگاری رو بسنجی.
()uniqid
یه شناسه یکتا و سریع بر اساس زمان میسازه. وقتی نیاز داری یه اسم فایل، یه کلاس HTML یا یه شناسه موقت داشته باشی که تکراری نباشه، uniqid سادهترین راهه. توی وردپرس برای نامگذاری فایلهای کش یا مقادیر موقت خیلی کاربردیه.
()parse_url
یه URL رو به بخشهاش تجزیه میکنه؛ دامنه، مسیر، پروتکل و پارامترها. وقتی توی وردپرس فقط دامنه یه لینک رو میخوای یا میخوای بفهمی چه پارامترهایی توی آدرس هست، parse_url دقیقاً همون چیزیه که لازم داری.
()http_build_query
یه آرایه از پارامترها رو به یه رشته کوئری برای URL تبدیل میکنه. مثلاً میخوای از روی آرایه، بخش ?page=2&order=asc رو بسازی؛ http_build_query سریعترین راهه. توی وردپرس برای ساخت لینکهای سفارشی و فیلترهای پیشرفته زیاد استفاده میشه.
[]GET_$
یه آرایه سراسریه که مقادیر ارسالشده توی نوار آدرس رو نگه میداره. وقتی کاربر یه چیزی رو جستجو میکنه، مقدارش داخل GET_$ قرار میگیره و تو میتونی بخونیش. توی وردپرس برای جستجوهای سفارشی و فیلترها همیشه باهاش سروکار داری.
[]SERVER_$
اطلاعات زیادی از سرور و درخواست فعلی داره؛ مثل آدرس صفحه، IP کاربر و پروتکل. توی وردپرس وقتی میخوای بدونی کاربر الان دقیقاً کجاست یا از کجا اومده، SERVER_$ بهت جواب میده.
هنوز نظری برای این مقاله ثبت نشده است.