Faragiri

همهٔ زبان‌ها

آموزش افزونه‌نویسی وردپرس وردپرس

هر کال‌بک فیلتر باید مقدار را برگرداند و جا انداختنش صفحه را خالی می‌کند. اکشن و فیلتر یک تفاوت دارند و همان یکی است.

۴بخش
۳دقیقه خواندن
۵عمق

سه طرف، یک مقدار

چه کسی مقدار را می‌سازد، چه کسی عوضش می‌کند، و چه کسی می‌بیندش

طرفی که معمولا فراموش می‌شود کال‌بک دوم است: او مقدار اصلی را نمی‌بیند، خروجی کال‌بک اول را می‌بیند.

  • مقدار اصلی
  • خروجی زنجیره
  • هیچ‌وقت مقدار اصلی را نمی‌بیند
  • هسته یا قالب
  • کال‌بک‌ها
  • مصرف‌کننده خروجی
  • هسته یا قالبمقدار اصلی را می‌سازد و فیلتر را صدا می‌زند
  • کال‌بک‌هابه ترتیب اولویت، و هرکدام خروجی قبلی را می‌گیرد
  • مصرف‌کننده خروجیفقط نتیجه آخرین کال‌بک را می‌بیند

این نمودار یک فیلتر را می‌کشد. اکشن همین شکل را دارد بدون مقدار برگشتی، و برای همین جا انداختن بازگشت در آن هیچ اثری ندارد.

دو نوع هوک هست و تفاوتشان یک چیز است. اکشن جایی است که کاری انجام می‌دهید و چیزی برنمی‌گردانید. فیلتر جایی است که یک مقدار به شما داده می‌شود، عوضش می‌کنید، و باید برش گردانید.

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

و اولویت ترتیب اجرا را تعیین می‌کند: عدد کمتر زودتر اجرا می‌شود، و کال‌بک دوم خروجی کال‌بک اول را می‌گیرد و نه مقدار اصلی را. برای همین اگر دو افزونه روی یک فیلتر بنشینند، ترتیبشان نتیجه را عوض می‌کند و همان است که تعارض دو افزونه را می‌سازد.

سه چیزی که یک افزونه درست دارد

پیشوند یکتا روی هر نام تابع و هر کلید تنظیمات. فضای نام توابع در وردپرس مشترک است و دو افزونه با یک نام تابع، سایت را با خطای کشنده می‌خوابانند.

بررسی قابلیت پیش از هر کار مدیریتی، و بررسی نانس پیش از هر ارسال فرم. اولی می‌گوید این کاربر اجازه دارد و دومی می‌گوید این درخواست واقعا از فرم شما آمده. جا انداختن دومی همان دری است که در درخواستی که مرورگر شما به نیابت کس دیگری می‌فرستد باز می‌شود. و سوم، پاک کردن خروجی پیش از چاپ و پاک کردن ورودی پیش از ذخیره، که دو کار جدا با دو دسته تابع جدا هستند.

فعال‌سازی، غیرفعال‌سازی، حذف

سه قلاب چرخه عمر هست و هر سه با هم اشتباه گرفته می‌شوند. فعال‌سازی جایی است که جدول می‌سازید یا زمان‌بندی ثبت می‌کنید. غیرفعال‌سازی جایی است که زمان‌بندی را برمی‌دارید و داده را دست نمی‌زنید. حذف جایی است که داده را پاک می‌کنید، و باید در یک فایل جدا باشد و نه به‌شکل قلاب.

پاک کردن داده کاربر هنگام غیرفعال‌سازی رایج‌ترین اشتباه این بخش است: کاربری که فقط می‌خواست موقتا افزونه را خاموش کند، تنظیماتش را از دست می‌دهد.

جایی که کار گیر می‌کند، افزونه‌های نال‌شده است

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

ابزار، و سالی که این حرف درست است

در سال ۲۰۲۶، Query Monitor نشان می‌دهد کدام هوک‌ها اجرا شده‌اند و هر کال‌بک از کدام افزونه آمده، و رایگان است؛ جای گشتن در فایل‌ها برای پیدا کردن اینکه چه چیزی یک خروجی را عوض کرده را گرفته. برای بررسی کد افزونه پیش از نصب، Plugin Check رسمی است و همان قاعده‌هایی را بررسی می‌کند که مخزن رسمی اعمال می‌کند.

پرسش بعدی این است که همین رفتارها وقتی از راه رابط برنامه‌نویسی صدا زده شوند چه شکلی دارند و چه چیزی عمومی است، که وردپرس به‌عنوان بک‌اند چیزی دیگر است. و لایه‌ای که این افزونه‌ها در آن می‌نشینند در چیزی که سهم بزرگی از وب را می‌گرداند تعریف شده.

کنار این

بالای این