دوره مجازی پلاگین نویسی وردپرس (جلسه 4) : بررسی hook ها در وردپرس و نحوه عملکرد آنها

- visibility ۱۹ mode_comment

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

 

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

  • ایجاد ساختار پوشه های پلاگین برای نظم بیشتر کار
  • جلوگیری از اجرای کدهای مستقیم پلاگین ها
  • ایجاد ثابت های مورد نیاز در پلاگین ها
  • معرفی HOOK ها در وردپرس و نحوه عملکرد آنها
  • معرفی ACTION ها
  • معرفی FILTER ها
info توجه

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

ثبت نام در دوره پلاگین نویسی وردپرس

comment دیدگاه کاربران
ح حسین

سلام
در صورتی که بخوایم یک action بعد از action دیگه تعریف بشه میتونیم با تنظیم اولویت اینکارو انجام بدیم
حالا اگه بخوایم اجرای action دوم وابسته به اجرای action اول باشه چطور انجام میدیم ؟
یعنی در صورتی که تابع اولی انجام شد تابع دوم رو اجرا کنه ( transaction )
با تشکر

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

سلام می تونید add_action دومی در در انتهای تابع اول تعریف کنید.

ح حسین

سلام
ببخشید که زیاد سوال میپرسم
این روشی که شما فرمودین یک ایراد داره
در صورتی که به فرض 3 تا اکشن باشن و اکسن اول انجام بشه و دوم و سوم مونده باشن و یکدفعه برق سرور بره یا هر دلیل دیگه ، مورد اول انجام میشه و مورد دوم و سوم خیر .
آیا چیزی مثل تراکنش که همه کدها یا اجرا بشن یا اگه کامل انجام نشد rollback بشه توی وردپرس هست ؟

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

سلام این که برق سرور بره یه موردی هست که معمولا در نظر نمیگیرینش. اما برای بحث تراکنش های بانکی شما می تونید از transaction ها در mysql استفاده کنید که در صورت موفقیت آمیز نبودن rollback میشن.

ح حسین

برای امنیت کد پلاگینها و یا قالب وردپرس چه راه حل مناسبی پیشنهاد میکنید ؟
آیا obfuscate کردن راه درستیه ؟ از نظر شما بهترین کار چیه تا کسی کد قالب یا پلاگین مار و مشاهده نکنه ؟
با تشکر

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

سلام متاسفانه همه سرور ها این روش ها رو قبول نمی کنن و راه خاصی و 100٪ برای مخفی کردن کدها وجود نداره به جز روش های encrypt کردن مثل ionCube و zend gurd که این روش ها هم باید ماژول خودشون روی سرور نصب باشه و هم چنین بعضا هم مشاهده مشه که این encrypt ها هم کرک میشه.

ح حسین

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

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

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

هومن کیائی

متشکرم از توضیحات خوبتون در مورد جلسه چهارم پلاگین نویسی

مسعود معینی

در صورتی که apply_filters دارای چند مقدار باشه. همونطور که خودتون مثال زدید مثل $test1 یا $test2 .
در این صورت هنگام تعریف تابع هم باید دو آرگومان قرار بدیم. سوال من اینجاست برنامه چطور متوجه میشه کدوم آرگومان مربوط به کدوم مقداره ؟

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

سلام. php برای فرخوانی توابع callback از call_user_func و call_user_func_array استفاده میکنه و در این توابع لیست آرگومان هم بوسیله func_get_args دریافت میشه. این تابع تعداد و مقدار آرگومان ها رو دریافت میکنه و به ترتیب به تابع callback منتقل میکنه. دقیقا شما به همون ترتیب که در apply_filters فرخوانی کردین در این تابع callback دریافت می کنید.

Mehdi Soli

سلام آقای علی محمدی عزیز، اول از همه ممنون بابت آموزش های خوبتون. دوم دچار یه سری مشکل شدم که خواستم از شما راهنمایی بگیرم. قبل از شروع به دیدن آموزش های شما، با wamp کار می کردم. در حال حاضر یه چند تا سایت رو هم سفارش گرفتم، با اون مشغول به کار هستم. آموزش های طراحی وردپرس و پلاگین نویسی رو به تازگی شروع کردم چون به شدت احتیاج داشتم تا بعضی از قسمت های تم هایی که خریده ام رو تغییر بدم و همچنین یه سری امکانات جدید برای مشتری هام اضافه کنم. چون تو آموزش ها دیدم که شما از xamp استفاده می کنید، تصمیم گرفتم که من هم روی xamp با شما جلو برم. اولین مشکل وقتی ایجاد شد که خواستم سه تا وردپرس رو با virtual host در کنار هم روی xamp بالا بیارم. متاسفانه با روشی که در فیلم های شما موجود بود، نمی شود دوتا virtual host در کنار هم بالا آورد (می تونید امتحان کنید) البته با یه سری سرچ تونستم مشکل رو حل کنم و با یه ترفند کوچیک (مثلا عوض کردن * با اسم virutal host در تنظیمات فایل httpd-vhosts.conf و …) مشکل موقتی حل شد، اما متاسفانه باز دچار مشکل شدم (به هر حال الان به همون روش سنتی استفاده Localhost در اول نام دایرکتوری حاوی سایت فعلا جلو میرم 🙁 🙁 🙁 ). ممنون میشم که در این مورد راهنمایی ام فرمایید. مشکل دوم در عوض کردن پورت ها می باشد. چون wamp از قبل داشت بر روی پورت 80 کار می کرد، طبق کاری که در آموزش ها بود، جلو رفتم، اما متاسفانه apache و mysql هیچکدام بالا نمی آمدند، از روی UI این کار رو انجام دادم اما بعد که نتیجه نگرفتم، بصورت دستوری فایل های تنظیمات apache رو عوض کردم که باز هم جواب نداد. از اونجا که مهندسا بالاخره یه راهی پیدا می کنند 😀 😉 برعکس انجام دادم، یعنی پورت های wamp رو گذاشتم رو 8080 و 3307 و با این کار هر دو به خوبی و خوشی بالا اومدند. ممنون میشم اگه این رو راهنمایی بفرمایید که چرا وقتی پورت ها رو عوض می کنیم، apache و mysql هیچکدام بالا نمی آیند (این رو روی دو تا کامپیوتر هم تست کردم، اما متاسفانه نتیجه کاملا مشابه هست و apache و mysql هیچکدام به درستی کار نمی کنند، در واقع نه داشبورد زمپ بالا میاد و نه صفحه پی اچ پی مای ادمین. روی کامپیوتر دوم، اصلا wamp نصب نبود و فقط با یه برنامه مثل skype پورت 80 رو اشغال کردم تا نتیجه رو بررسی کنم و مطمئن بشم اشکال از سیستم بنده نیست). فکر کنم خیلی زیاد شد، سوال بعدی رو میذارم تو پست بعد از این 😕 😕 😕

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

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

Mehdi Soli

در کل و با وجود تمام این ها، خیلی خیلی خیلی ممنون از آموزش های بسیار خوبتون و ممنون بابت تمامی زحمات ارزشمندتون. امیدوارم خداوند بهتون قوت بده تا دوره های دیگه ای رو هم برگزار کنید و ما از اون ها استفاده کنیم. ممنون از لطف و محبت شما

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

ممنون از شما دوست عزیز.

mehdi karimi

سلام و خسته نباشید
اقا کیوان من هنگام فعال سازی افزونه ای که نوشتم با پیغام زیر مواجه میشم:
افزونه هنگام فعال شدن٬ 29 نویسه از یک خروجی غیرمنتظره تولید کرد. اگر با پیغام خطای “headers already sent”٬ مشکلات مربوط به خوراک و یا مسائل دیگر مواجه شدید سعی کنید افزونه را غیرفعال یا حذف کنید.

حتی با utf-8 و بدون bom هم ذخیره کردم
توی فایلم هم فقط یک رشته رو echo کردم
مشکل چیه به نظرتون

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

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

زارعی هوشیار

سلام…استاد خسته نباشید……بابت آموزش های خوبتون….تشکر میکنم……کاش میتونستیم تو دوره متخصص وردپرس شرکت کنم…با استادی مثل شما جای پیشرفت زیاده….ولی حیف نتونستم شرکت کنم

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

سلام و ممنون از نظر لطف شما.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.