مفهوم هوک در طراحی قالب یا افزونه برای وردپرس
اگر تابحال اسم هوک را در طراحی قالب یا افزونه برای وردپرس شنیده اید ولی نمی دانید که چیست پس همراه ما باشید تا با مفهوم جدیدتری آشنا شوید که بسیار کاربردی است.
هوک (hook) در انگلیسی به معنای قلاب و چنگک می باشد.
قبل از اینکه در رابطه با هوک توضیح بدهم اجازه بدهید ابتدا در مورد چرخه حیات (page lifecyle) یک صفحه در وردپرس صحبت کنم
چرخه حیات ترکیبی است از اتفاقات از زمانی که مرورگر یک صفحه وب را از سرور درخواست میکند تا هنگامی که آن صفحه در مرورگر نمایش داده میشود.
برای مثال شما آدرس یک صفحه وبلاگ وردپرسیتون را وارد میکنید وردپرس مراحل زیر را انجام میدهد :
۱- نگاه کردن به page ID صفحه درخواست شده
۲- فرستادن درخواست به دیتابیس برای دریافت اطلاعات صفحه مورد نظر
۳- فرستادن درخواست به دیتابیس برای دریافت اطلاعات وابسته با آن صفحه مثلا دسته بندی ها و تگ ها و غیره …
۴- فرستادن درخواست به دیتابیس برای دریافت اطلاعات مربوط به نظرات وابسته به آن صفحه
۵- بازگرداندن تمامی اطلاعات دریافت شده در مراحل بالا به مرورگر جهت نمایش
زمانی که وردپرس چرخه بالا را انجام میدهد مرتبا دنبال هوک ها (اکشن و فیلتر) میگردد و در صورت پیدا کردن اکشن یا فیلتر توابع مرتبط با آنها را اجرا می کند.
تا اینجا ممکنه مطلب کمی گیج کننده باشه ولی در ادامه سعی می کنم ساده تر توضیح بدهم
به طور کلی هوک در وردپرس به دو دسته تقسیم میشود:
۱- اکشن
۲- فیلتر
در مورد اکشن باید بگم زمانی اجرا میشه که اتفاق خاصی در وردپرس رخ داده باشه مثلا کاربری در سایت ثبت نام بکنه یا یک پست جدید منتشر بشه ….
در مورد فیلتر ها قضیه فرق می کنه و زمانی کاربرد داره که مثلا بخواهیم قبل از نمایش یک پست در وبلاگ تغییراتی در آن بدیم یا قبل از ذخیره یک مطلب در دیتابیس آن را ادیت کنیم و ….
نکته : در واقع ما از اکشن استفاده می کنیم تا توابعی را به بخش دلخواهی از کد ( کد هسته یا کد قالب) نسبت بدیم
۲ نمونه از معروف ترین اکشن ها wp_head() و wp_footer() هستد که در اکثر قالب ها دیده میشوند اولی در فایل header.php قرار داره و مورد دوم در فایل footer.php
برای مثال بعضی از پلاگین ها برای اضافه کردن کد دلخواهشون به قسمت head وب سایت از اکشن wp_head استفاده میکنند
جهت روشن شدن توضیحات بالا چند مثال می زنم :
فرض کنید شما می خواهید به انتهای تمای پستهای وبلاگتون یک متن ثابت اضافه کنید برای این کار حتما پلاگینی وجود داره اما شما به راحتی میتونید از طریق فیلتر ها این کار را انجام بدید
در وردپرس فیلتری داریم به اسم the_content که توسط این فیلتر شما می توانید به محتوای پستهای وبلاگ قبل از نمایش مطلبی را اضافه کنید
در فایل functions.php یک تابع دل خواه برای اضافه کردن مطلب تعریف میکنیم :
[php]</p>
function matlab($content){
if(is_single()){
$content.='<p class=”matlab”>نوشته تازه اضافه شده توسط فیلتر</p>’;
return $content;
}
return $content;
}
<p dir=”RTL”>[/php]
پس از تعریف تابع دل خواه توسط دستور زیر تابع را به فیلتر the_content نسبت می دهیم :
[php]add_filter(‘the_content’,’matlab’);[/php]
حال نوشته “این یک متن ثابت است ” به انتهای تمامی پست ها اضافه میشود .
در انتها برای نمایش کاربرد اکشن ها با استفاده از اکشن wp_head() برای کلاس matlab که در بالا تعریف کردیم style تعریف میکنیم
در این مورد هم ابتدا یک تابع دلخواه تعریف کرده سپس به اکشن wp_head() نسبت می دهیم :
function style(){
echo ‘<style type=”text/css”>.matlab{background-color:#CCC;border:#000 3px dashed;}</style>’;
}
add_action(‘wp_head’,’style’);
سلام
عین همین مطلب رو در سایت همیار وردپرس خونده بودم !
یا شما کپی برداری کرده اید یا اونها .. الله اعلم .. در کل کار خوبی نیست
انگار مرجعش رو هم نوشتید .. افرین
بنا به درخواست مدیر سایت این مطلب با ذکر منبع کپی شده تا بعضی از کاربران که سوالاتی در قبیل افزونه داشتند به پاسخ خود برسند.از حسن ظن شما متشکریم.
سپاس