campaign-Ghorban-to-Ghadir

دوره مجازی قالب وردپرس (جلسه 28): ajax در وردپرس و ارسال داده های php به جاوا اسکریپت



visibility  
mode_comment   ۴۷

به نام خدا و سلام. در جلسه ۲۸ ام از دوره مجازی آموزش طراحی قالب حرفه ای وردپرس در خدمت شما هستیم با پیاده سازی ایجکس در ودرپرس. در ابتدای حلسه فایل جی کوئری پیش فرض وردپرس رو با جی کوئری گوگل عوض می کنیم و سپس مبحث ارسال داده های از سمت php به جاوااسکریپت رو آموزش میدیم که برای بحث ajax بهش نیاز داریم. در ادامه یک درخواست ajax برای وردپرس ارسال می کنیم و نتایج اون رو بررسی می کنیم که به چه صورت این نوع درخواست ها در وردپرس مدیریت خواهد شد.در جلسات بعدی به صورت حرفه ای و عملی از ای جکس استفاده خواهیم کرد.

در این جلسه خواهیم داشت :

  • تغییر جی کوئری پیش فرض وردپرس با جی کوئری گوگل
  • ارسال داده های سمت سرور به سمت کلاینت از طریق وردپرس
  • پیاده سازی درخواست های ای جکس در وردپرس
info توجه

این مطلب یک جلسه از آموزش طراحی قالب وردپرس می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش طراحی قالب وردپرس

comment دیدگاه کاربران
وحید صالحی replyپاسخ

بسیار عالی خسته نباشی کیوان جان

کیوان علی محمدی

مرسی وحید جان. شما هم خسته نباشی.

ahmad katavand replyپاسخ

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

کیوان علی محمدی

سلام اگه پلاگین میخواین استفاده کنید بهترین چیزی که فعلا موجوده user-pro هستش البته رایگان نیست ولی توی سایت های فارسی می تونید رایگان پیداش کنید. افزونه theme my login هم خوبه.

sara salami

سلام.مگه برای قالب این مورد لحاظ نشده؟…البته بابرنامه نویسی..

کیوان علی محمدی

سلام ما لاگین و ثبت نام و هم چنین صفحه پروفایل رو برای قالب در نظر گرفتیم. شما پرسیدین چه افزونه ای ما هم خدمت شما معرفی کردیم 🙂

reza_yki replyپاسخ

سلام استاد الان که به بحث اجاکس رسیدیم میشه اموزش بدید که چه طور مطالب رو مثل فیسبوک لود کنیم بدون صفحه بندی

کیوان علی محمدی

سلام در جلسه ۲۹ ما با تکنیک load more که یک دکمه هست تقریبا اینکارو انجام دادیم. تکنیک infinite scroll هم به همین راحتی هست فقط کمی کدهای جاوااسکریپتش فرق داره.

reza_yki

میشه این مورد هم یه توضیحی بدید که جطوری هستش ممنون از شما

کیوان علی محمدی

در جلسه ۲۹ که منتشر شده کاملا توضیح دادیم.

darin replyپاسخ

سلام استاد
ممنونم از اموزش بی نظیرتون
استاد من درخواست را که با ایجکس پیاده سازی کردم وقتی روی لینک کلیک میکردم، توی consol را که نگاه کردم هربار 2 درخواست ارسال میشد! یعنی با یک کلیک دو درخواست ارسال میشد.
استاد بنطرتون مشکل از کجاست؟
ببخشید استاد تکنیک لود مور خیلی خوبه ولی کاربر هربار برای لود مطالب کلیک کند، و هربار یک مطلب لود شود کمی سخته بنظرم
تکنیک scroll infinite کاربردی تره

کیوان علی محمدی

سلام احتمالا مشکلی وجود داره و کدهای ما دوبار داره اجرا میشه باید این مورد رو خیلی دقیق بررسی کنید. در قالب فعلیمون امکان پیاده سازی تکنینک infinite scroll وجود نداره چون اگه بخش مطالب ویژه رو ببینید متوجه می شید با این تکنینک عملا این مطالب در دسترس کاربر قرار نمیگیره هر چند پیاده سازی این مورد هم خیلی راحته.

darin replyپاسخ

استاد ممنونم از اینکه وقت گذاشتی
استاد تمامی کدها رو دقیق بررسی کردم و فقط یک بار درخواست باید ارسال بشه ولی درهنگام کلیک کردن، اکثرا دوبار درخواست ارسال میشود و گاها یک بار ارسال میشود
یعنی با کلیک بروی پسندیدم تعداد آن از 1 به 3 افزایش می یابد.

کیوان علی محمدی

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

darin

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

کیوان علی محمدی

شما کلاس های بخش لایک رو تغییر بدین و این تغییرات رو در جی کوئری هم اعمال کنید و دوباره تست کنید.

darin

استاد با یک کلیک دو درخواست ارسال میشود
یه نگاه کنید به این عکس
uupload.ir/files/8bz6_2015-11-22_18-35-37.png

کیوان علی محمدی

کدها رو ایمیل کنید بررسی کنم.

علی اصغر جهانی replyپاسخ

سلام
من درخواست ajax ام بخش آی دی کاربر را که می فرستیم در فایرفاکس جواب می ده . اما در گوگل کروم نه میشه اگه تنظیمات خاصی داره این مرورگر بگید انجام بدم . اونایی که از این نسخه مرورگر کروم استفاده می کنن هم نمی تونن مث من درخواس درست بفرستن ؟ ؟ کلا مشکل از کجاست فقط user_id را نمی تونه بفرسته و مقدار 0 را برمی گردونه

کیوان علی محمدی

سلام مطمئنا به مرورگر ربط خاصی نداره. باید مرحله به مرحله دیباگ کنید.

علی اصغر جهانی

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

کیوان علی محمدی

شما توی کروم دیباگ رو انجام بدین. مرحله به مرحله یعنی اینکه از جاوااسکریپتش شروع کنید ببینید داده ها در سمت کاربر درسته یا نه و بعدش در سمت سرور داده ها رو چک کنید. یه مفهمومی در برنامه نویسی وجود داره به نام Unit Testing که ما قسمت های مختلف برنامه رو به صورت جدا تست می کنیم تا از کاربر اونا مطمئن بشیم.

mostafash replyپاسخ

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

کیوان علی محمدی

سلام من دقیقا مشکلتون رو متوجه نشدم. واضح تر توضیح بدین.

mostafash

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

مهدی بشیرپور

اون تابع wp_footer رو اگه قبل از تگ بادی نزاریم و همچنین ناقض بزاریم هم صفحات ایجکس معرفی شده با wp_enqueue_script رو نمیشناسه و هم چنین مشکلات دیگه ای رو هم ایجاد میکنه. 😎

amir baragy replyپاسخ

سلام استاد
چرا نباید جکوئری توسط CDNگوگل درقسمت ادمین لود شود؟
“سپاس”

کیوان علی محمدی

سلام خود وردپرس این کار رو انجام داده و نیازی به cdn گوگل نیست.

حامد نجاری replyپاسخ

سلام آقای علیمحمدی ، وقتتون بخیر .
امکان داره یه مقدار درباره تابع wp_die توی وردپرس به من توضح بدین ؟
من توی منابع خارجی هم گشتم ولی دقیقا متوجه منظورشون نشدم که این تابع چکار انجام میده .
باتشکر و سپاس از شما استاد عزیز .

کیوان علی محمدی

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

Mehdi Soli replyپاسخ

سلام خدمت آقا علی محمدی عزیز، خدا قوت استاد، یه دو تاسوال کوچیک داشتم. اول اینکه من در همه پروژه هام از جی کوئری های ورژن 3 استفاده می کنم. اشکالی داره به جای ورژن های یک از ورژن استفاده کرد؟ در روال کار وردپرس اشکالی ایجاد می کند؟ دومین سوال در مورد استفاده از cdn های گوگل هست. وقتی لینک مربوط به cdn رو در مرورگر خودتون وارد می کنید، گوگل به دلیل اینکه از ایران لاگین شدیم، اجازه دسترسی به این فایل رو نمیده، این امر مشکلی در هنگام لود سایت ما ایجاد نمیکنه؟ یعنی مرورگر سعی میکنه فایل رو لود کنه اما چون آی پی از ایران هست، گوگل این اجازه رو نمیده. بهتر نیست از cdn های دیگه ای به غیر از گوگل استفاده کرد؟ بسیار از لطف و محبت شما سپاسگزارم

کیوان علی محمدی

سلام دوست عزیز. بعید میدونم مشکلی پیش بیاره .فقط قبلش توابع deprecate شده رو بررسی کنید چون نباید از این توابع در قالب استفاده کنید. می تونید از نسخه های self-host برای این موارد استفاده کنید و لزومی به استفاده نسحه گوگل نیست.

زارعی هوشیار replyپاسخ

سلام ..استاد علی محمدی خسته نباشید….خیلی خوب بووود….
فقط یه سوالی واسم پیش اومد..اونم این است که در ایجکس مگه درخواست به url که مشخص میکنیم ارسال نمی شود؟وگفتین که براینکه داینامیک بشود باید از تابع wp_localize_script استفاده کنیم تا یه یک دیتا به فایل جاوا اسکریپت بفرستیم و ازاونجا هم url مربوطه به وردپرس …یعنی فایل admin_ajax.php….تا اینجا درست!ولی در وردپرس شما از یک اکشن استفاده کردین و ایجکس مربوطه رو نمایش دادید ولی نه در فایلی که در url مشخص شده بود….بلکه اول در function.php وبعد برای اینکه مرتب بشه به فایل ajax.php انتقال دادید..‌‌.پس url چه نقشی داشت ؟شما که همه این کارهارو انجام دادید…تا داینامیک باشه …ولی در طرف وردپرس بیشتربراساس اون اکشنی که در داخل ایجکس تعریف شده بود …ایجکس پردازش شد ونمایش داده شد…چرا در داخل فایلی که در urlبود کد های مربوطه رو پردازش نکردید؟….خیلی ممنون میشم یه توضیحی بدید…‌

کیوان علی محمدی

تمام درخواست های ایجکسی وردپرس در فایل admin-ajax.php هندل میشه و ما تمام درخواست ها رو به اون فایل می فرستیم. حالا وردپرس این قابلیت رو به ما میده که با استفاده سیستم هوک ها در هر کجای سیستم (قالب یا پلاگین) بتونیم به اون درخواست پاسخ بدیم. در واقع این مورد برای انعطاف پذیری سیستم هستش.

زارعی هوشیار

سلام…..خیلی ممنون استاد علی محمدی از پاسختون…..دمتون گرم واقعا ….مطلب رو خوب توضیح میدین

کیوان علی محمدی

موفق باشید.

sajadprm replyپاسخ

سلام
من وقتی درخواست ajax میفرستم با ارور 404 مواجه میشم من از همین روش شما استفاده کردم دلیل چیست ؟

کیوان علی محمدی

سلام بهتره حتما آدرس رو کاملا چک کنید.

sajadprm replyپاسخ

سلام آقای علی محمدی من یک سوال برای شما از طریق ایمیل ارسال کردم لطفا پاسخ بدید ممنون

کیوان علی محمدی

سلام با چه عنوانی؟

sadaf replyپاسخ

سلام چرا نمیشه فایل هارو با adm دانلود کرد؟

کیوان علی محمدی

کوکی هاتون رو پاک کنید و دوباره لاگین کنید و تست کنید.

مسلم دهقان replyپاسخ

سلام . من تمام کارها رو طبق درس انجام دادم اما با زدن روی دکمه های سوشال پیغام [HTTP/1.1 400 Bad Request رو نمایش می ده . مشکل از کجاست .
با تشکر

کیوان علی محمدی

سلام حتما یک جای کار رو اشتباه رفتین بهتره دوباره مرحله به مرحله چک کنید.

Alireza Shahsavary replyپاسخ

سلام خدمتشما استاد عزیز
در قسمت ajax مرتبا ارور 400 دریافت میکنم. حتی فایل جلسه 28 رو که شما در اختیار ما گذاشتید رو به صورت کامل به عنوان قالب قرار دارم اما باز ارور دریافت میکنم
ممنون میشم اگر راهنمایی بفرمایید

کیوان علی محمدی

سلام خدمت شما. متن خطای 400 که برگشت داده شده چی هست؟

Alireza Shahsavary

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

ارسال نظرات

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