دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۴
  • شهریور

جلسه ۵۵ : آشنایی با سرور PHP و Enqueaching

  • دسته‌بندی‌ها :
جلسه ۵۵ : آشنایی با سرور PHP و Enqueaching
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
      به ” دوره متخصص وردپرس ” خوش آمدید!
      در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
      فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
      در جلسه گذشته با استفاده از Ajax در ساخت پلاگین آشنا شدیم.
      در ادامه این دوره آشنایی با سرور PHP و Enqueaching را به علاقمندان این دوره ارائه می نماییم.

      آشنایی با سرور PHP و Enqueaching

      دو بخش در اسکریپت PHP سمت سرور وجود دارد که برای اجرای ارتباطات AJAX لازم هستند.
      ابتدا باید اسکریپت jQuery را در صفحه وب رمزگذاری کنیم و مقادیر PHP را که به اسکریپت jQuery نیاز دارد بومی سازی نماییم.
      دومین مرحله نیز رسیدگی به درخواست AJAX است.
      در جلسه  آشنایی با سرور PHP و Enqueaching با مباحث زیر آشنا می شویم :

      • Enqueue Script
      • Enqueue
      • ثبت نام Enqueue
      • Nonce
      • محلی سازی Localize
      • AJAX Action
      • و غیره

      آشنایی با سرور PHP و Enqueaching را با Enqueue Script آغاز می نماییم.

      Enqueue Script

      در این بخش دو سؤال اصلی AJAX در وردپرس قرار دارند.
      یکی نیاز به رمزگذاری اسکریپت ها برای به دست آوردن پیوندهای متا دارد که در بخش page’s head قرار می گیرد.
      در دومی کلیه درخواستهای AJAX باید از طریق wp-admin / admin-ajax.php ارسال شود.

      نکته

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

      Enqueue

      برای دریافت وردپرس از تابع ()wp_enqueue_script استفاده کنید تا پیوند متا به اسکریپت شما در بخش صفحه وارد شود.
      هرگز چنین پیوندهایی را در الگوی تم قرار ندهید.
      به عنوان یک توسعه دهنده افزونه ، شما  header template هدر پوسته دسترسی ندارید.

      تابع دارای سه پارامتر است.
      پارامتر اول،  یک برچسب یا دسته دلخواه است که برای مراجعه به اسکریپت شما در سایر توابع استفاده می شود.
      دومی URL کامل فایل اسکریپت شماست. که برای قابلیت حمل باید ، از ()plugins_url برای ساختن URL مناسب استفاده کنید.
      اگر اسکریپت را برای چیزی به جز یک افزونه در حال رمزگذاری می کنید ، از برخی توابع مرتبط، برای ایجاد یک URL مناسب استفاده کنید
      – هرگز آن را کدگذاری نکنید. –
      پارامتر سوم مجموعه ای از هر برچسب های اسکریپتی است که اسکریپت شما به آن وابسته است.
      از آنجا که ما برای ارسال درخواست AJAX از jQuery استفاده می کنیم ، لااقل باید “jquery” را در آرایه لیست کنید.
      همیشه حتی اگر فقط برای یک dependency باشد از یک آرایه استفاده کنید.
      فراخوان enqueue برای مثال ما اینگونه است:

      مثال : 

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

      موارد استثناء

      برای صفحات مدیریت ، از admin_enqueue_scriptts استفاده کنید.
      برای صفحات front-end از wp_enqueue_scriptts به جز  -صفحه ورود- استفاده کنید.
      در این صورت از login_enqueue_scriptts استفاده نمایید.

      هوک admin_enqueue_scripts نام فایل صفحه فعلی شما را به فراخوان شما متصل می کند.پ
      از این اطلاعات استفاده کنید تا اسکریپت خود را فقط در صفحات مورد نیاز به کار برید .
      نسخه front-endاز هیچ چیزی عبور نمی کند.
      در این حالت ، از برچسب های الگویی مانند ()is_home و ()is_single و غیره استفاده کنید تا اطمینان حاصل کنید که فقط اسکریپت خود را در جایی که لازم است ضمیمه میکنید.
      کد زیر گویای موارد گفته شده در بالاست:

      مثال : 

      چرا در اینجا از یک تابع نامگذاری شده استفاده می کنیم اما از توابع ناشناس با jQuery استفاده نمیکنیم؟
      از آنجا که بسته شدن تابع فقط اخیراً توسط PHP پشتیبانی می شود jQuery فقط مدتی از آنها پشتیبانی می کند.
      از آنجا که برخی از افراد هنوز هم از نسخه های قدیمی تر PHP استفاده می کنند.
      ما همیشه از توابع نامگذاری شده برای حداکثر سازگاری استفاده می کنیم.

      ثبت نام Enqueue

      شاید تا به حال نمونه هایی را دیده باشید که از ()wp_register_script استفاده می کنند.
      استفاده از ()wp_register_script اختیاری است.
      در مقابل استفاده از ()wp_enqueue_script اجباری می باشد.
      این تابع باید به منظور پیوند درست فایل اسکریپت شما در صفحه وب فراخوانی شود.

      چرا باید اسکریپت ها را ثبت کنید؟
      این کار یک برچسب یا دسته مفید  ایجاد می کند که با استفاده از آن می توانید در صورت لزوم به راحتی اسکریپت را در بخش های مختلف کد خود ارجاع دهید.
      البته اگر فقط به بارگذاری اسکریپت خود نیاز دارید و در جای دیگری از کد خود به آن مراجعه نمی کنید ، نیازی به ثبت آن نیست.
      مطلب بعدی که در ”  آشنایی با سرور PHP و Enqueaching ” ارائه می شود؛ مبحث Nonce است.

      Nonce

      شما باید یک پیوند ایجاد کنید تا درخواست جی کوئری AJAX به جای یک درخواست مخرب از سوی افراد ناشناخته تایید نشود.
      فقط اسکریپت PHP و اسکریپت jQuery شما این مقدار را می دانند.
      وقتی درخواست دریافت شد، می توانید تأیید کنید که همان مقداری است که در اینجا ایجاد شده است یا خیر.
      به مثال زیر توجه نمایید:

      مثال : 

      پارامتر title_example می تواند هر رشته دلخواه باشد.
      پیشنهاد می شود رشته مربوط به مواردی باشد که از آن استفاده نشده است.
      اما واقعاً می توانید هر چیزی را که مناسب می دانید استفاده نمایید.

      محلی سازی Localize

      اگر بخش jQuery را به یاد بیاورید، داده های ایجاد شده توسط PHP برای استفاده توسط jQuery در یک شی سراسری به نام my_ajax_obj منتقل می شوند.

      در مثال ما ، این داده ها یک urce و URL کامل برای admin-ajax.php بود.
      فرایند اختصاص دادن خصوصیات شی و ایجاد جی کوئری سراسری، بومی سازی گفته می شود.
      این کد در واقع کد بومی سازی در مثال ما است که از ()wp_localize_script استفاده می کند.

      توجه داشته باشید که چگونه از اسکریپت دسته ما استفاده می شود تا متن آژاکس را به کار برده و شیء سراسری به اسکریپت مناسب اختصاص یابد.
      این شی برای اسکریپت ما سراسری است؛ البته نه برای همه اسکریپت ها.
      بومی سازی را می توان از همان هوکی که برای ضبط کردن اسکریپت ها استفاده می شود؛ فراخوانی نمود.

      اگرچه این تابع خاص را می توان تقریباً در هر نقطه فراخوانی کرد اما همه اینها در یک پاسخ به یک هوک با هم ترکیب شده اند:

      مثال : 

      AJAX Action

      بخش مهم دیگر کد PHP سمت سرور ، کنترل کننده واقعی AJAX است که داده های POSTed را دریافت می کند ، کاری را با آن انجام می دهد ، سپس یک پاسخ مناسب را به مرورگر ارسال می کند.
      این کار توسط یک هوک اکشن وردپرس انجام می شود.
      این که کدام تگ را مورد استفاده قرار دهید بستگی به این دارد که کاربر لاگین می شود یا خیر و چه مقدار از اسکریپت jQuery شما به عنوان اکشن عبور می کند : value مقدار

      $_GET , $_POST_$ و COOKIE vs $_REQUEST

      احتمالاً برای بازیابی مقادیر از فرم ها یا کوکی ها (با استفاده از COOKIE_$) از یک یا چند نوع سوپر گلوبال  PHP مانند GET_$ یا POST_$ استفاده کرده اید.
      شاید به جای آنها شما REQUEST_$ را ترجیح دهید یا حداقل آن را استفاده کرده باشید.
      صرف نظر از روش درخواست ، POST یا GET ، مقادیر فرم را خواهد داشت.
      هر دو می توانند برای صفحاتی که از آنها استفاده می کنند عالی باشند.
      علاوه بر این روش مقادیر کوکی ها را هم در اختیار دارد.
      در صورت تعارض نام ، مقدار کوکی هر مقدار فرم را نادیده می گیرد.
      بنابراین برای کسی که از فرم شما جعل می کند مضحک است که یک کوکی تقلبی را در مرورگر خود جعل کند زیرا  هر مقدار فرم مورد نظر شما توسط آن بازنویسی می شود.
      REQUEST_$ مسیری آسان برای هکرها است که می توانند داده های دلخواه را به مقادیر فرم شما تزریق کنند.
      برای امنیت بیشتر بهتر است متغیرهای خاص خود را به کار ببرید و از این که یک اندازه متناسب را مورد استفاده قرار دهید اجتناب کنید.
      در ادامه ”  آشنایی با سرور PHP و Enqueaching ” به موضوع مبادله AJAX می پردازیم.

      مبادله AJAX

      از آنجا که مبادله AJAX ما برای صفحه تنظیمات پلاگین است ، کاربر باید وارد سیستم شود.
      اگر بخش jQuery را به یاد داشته باشید؛
      action در واقع مقدار my_tag_count است.
      این بدان معنی است که تگ هوک اکشن ما wp_ajax_my_tag_count خواهد بود.
      اگر مبادله AJAX ما توسط کاربرانی که در حال حاضر وارد سیستم نشده اند مورد استفاده قرار گیرد، تگ هوک اکشن  wp_ajax_nopriv_my_tag_count خواهد بود.
      کد اصلی استفاده شده برای هوک اکشن به شرح زیر است:

      مثال : 

      اولین کاری که باید AJAX انجام دهد، تأیید صحت عدم ارسال توسط jQuery با ()check_ajax_referer است ، که باید به همان مقداری باشد که هنگام بومی سازی اسکریپت enqueued شده است.

      مثال : 

      پارامتر ارائه شده باید با پارامتر ارائه شده قبلی برای ()wp_create_nonce هماهنگ باشد.
      در صورت عدم بررسی این تابع، به سادگی آن را از دست خواهید داد.

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

      در پایان مبحث آشنایی با سرور PHP و Enqueaching شما را با کاربرد داده در این مبحث آشنا می کنیم.

      داده

      با وجود عدم دسترسی ، کنترل کننده ما می تواند با داده های ارسال شده توسط اسکریپت jQuery موجود در POST_$ [‘title’] مقابله نماید.
      می توانیم با استفاده از ()update_user_meta این کار را انجام دهیم.

      مثال : 

      سپس یک کوئری ایجاد کرده  ایجاد می کنیم تا بتوانیم تعداد پست برای تگ عنوان انتخاب شده را بدست آوریم.

      مثال : 

      در آخر می توانیم پاسخ را به اسکریپت jQuery ارسال کنیم.

      کلام آخر

      در این جلسه مفصلاً به آشنایی با سرور PHP و Enqueaching پرداختیم.
      در جلسه بعدی شما را با Heartbeat API آشنا می نماییم.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۵۵ : آشنایی با سرور PHP و Enqueaching
      به اشتراک بگذارید