دسته‌ها
Javascript PHP WordPress آموزشی اسنیپت برنامه‌نویسی

نمایش متن در فرانت، داخل حلقه PHP به ازای هر آیتم

بالاخره بعد مدتها وقت شد یه پست آموزشی آماده کنم. حتما براتون پیش اومده که یک کاری رو داخل حلقه با php دارید انجام میدید مثلا یک فانکشن خاصی روی تعداد ۱۰۰ ایتم در یک حلقه اجرا میشه و میخواهید بعد از انجام عملیات روی هر ایتم به کاربر در فرانت اند نشون بدید الان ایتم فلان پراسس شده و اینقدر درصد از کل کار پیش رفته. خب چطوری میشه؟ اگر پیش نیومد براتون هم بخونید پست رو بعدا بدرد تون میخوره.

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

درخواست: میخواهیم یک meta از پست های سایت رو تغییر بدیم، مثلا ۱۵۰۰ تا پست داریم. خب یه راه حل اینه که با wp_localize_script بیاییم لیست پست ها رو که از get_posts گرفتیم رو به فایل جاوا اسکریپت مون بدیم، بعد اون طرف با اجاکس و مثلا متد post ریکوئست بفرستیم پست ها رو یکی یکی داخل لوپ (یا با سینکرونوس) و بعد از اتمام هر ریکوئست نتیجه رو بگیریم نشون بدیم تو فرانت. ولی یکم پیچیده هست برای کار به این سادگی درسته؟ میخواهیم یه متا از پست ها رو تغییر بدیم که کلا با php میشه انجامش داد، دیگه جاوا اسکریپت و اینا چیه دست و پا گیر شده!

راه حل: قرار هست با افزودن یک کوئری به صفحه داشبورد مدیریت سایت، یک صفحه سفید باز بشه و پست ها رو یکی یکی پراسس کنه متا شون رو تغییر بده و همزمان هم درصد پیشرفت رو نشون بده، و کاربر هم بتونه وسط پروسه سیستم رو متوقف کنه. و برای پراگرس بار هم بکگراند بادی رو با گرادینت رنگ میکنیم.

کد زیر رو با توضیحات کامل هست :

 

کد زیر هم بدون کامنت و جمع جور شده است.

 

از این ترفند برای نمایش درصد آپلود هم میشه استفاده کرد، همونطور که در اسکریپت Upload File from URL to WebServer از این روش استفاده کردم برای زمانی که فایل از URL در سرور آپلود میشه درصد رو نشون میده و پراگرس هم با رنگ بادی مشخص میشه. برای دمو فیلم زیر رو ببینید:

دانلود اسکریپت آپلود URL به سرور

دانلود فیلم دمو با کیفیت اصلی

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

 

 

2 دیدگاه دربارهٔ «نمایش متن در فرانت، داخل حلقه PHP به ازای هر آیتم»

مهندس جان واقعا عالی بود از مطالعه این پست واقعا لذت بردم ، ممنون از زمانی که گذاشتید 💙

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *