معرفی سیستم Hook و apply_filters در وردپرس
با عرض سلام خدمت همراهان گرامی مِستر آموز؛
امروز در مِستر آموز قصد داریم در رابطه با هوک در وردپرس و تابع apply_filters وردپرس صحبت کنیم و کارایی آن ها مورد بررسی قرار بدهیم.
یادتا باشد که اگر میخواهید که برای وردپرس افزونه ای را بنویسید یا پوسته های حرفه ای طراحی کنید؛ یکی از مواردی که به آن شدیدا نیازمند هستید شناخت هوک و apply_filters وردپرس در آن می باشد.
سیستم هوک و apply_filters وردپرس
قبل از صحبت کردن درباره تابع apply_filters، بهتر است با هوک کمی آشنا بشیم و ببینیم به چه معناست و چه کاری می تواند انجام می دهد.
در حقیقت hook در زبان انگلیسی به معنای قلاب است اما در وردپرس نوعی تابع بشمار می رود که با کمک آن می توان متن یا بخشی را فیلتر کرد. در واقع هوک به دو بخش Action و Filter تقسیم می شود. آن ها را معرفی می کنیم.
Filter
در این قسمت موضوع متفاوت است و اگر بخواهیم قبل از نمایش یک پست در سایت تغییراتی بر روی آن انجام بدهیم یا قبل از ذخیره یک مطلب در دیتابیس آن را ادیت کنیم و … کاربرد دارد.
مهم ترین نمونه ای که در این بخش موجود است فیلتر apply_filters وردپرس است.
Action
Action زمانی اجرا می شود که اتفاق خاصی رخ داده باشد. به عنوان مثال زمانی که کاربر در سایت وردپرسی ثبت نام می کند یا پستی منتشر می شود و امثال اینها.
دو تا از معروف ترین اکشن ها ()wp_head و () p_footer هستد. این اکشن ها در اکثر قالب ها وجود داردند. اکشن ()wp_head در فایل header.php می باشد و () p_footer در فایل footer.php می باشد.
در حقیقت بخاطر اینکه توابعی را به بخش دلخواهی از کد ( کد هسته یا کد قالب) نسبت دهیم از اکشن ها استفاده می کنیم.
برای مثال بعضی از پلاگین ها برای اضافه کردن کد دلخواهشان به قسمت head وب سایت از اکشن wp_head استفاده میکنند.
جهت روشن شدن توضیحات بالا چند مثال میزنیم:
برای مثال اگر شما می خواهید به انتهای تمای پست های وبسایت یک متن ثابت اضافه کنید جهت انجام دادن این کار شما حتما باید از یک پلاگین استفاده کنی. اما از طریق فیلتر ها این کار را شما به راحتی میتوانید انجام دهید.
در وردپرس فیلتری به اسم the_content موجود است که توسط این فیلتر شما می توانید به محتوای پست های وبلاگ قبل از نمایش مطلبی را اضافه کنید.
در فایل functions.php یک تابع دلخواه برای اضافه کردن مطلب تعریف میکنیم :
<pre class="brush:php">function matlab($content){ if(is_single()){ $content.='<p class="matlab">نوشته تازه اضافه شده توسط فیلتر</p>'; return $content; } return $content; }
بعد از تعریف تابع دلخواه توسط دستور زیر تابع را به فیلتر the_content نسبت می دهیم:
add_filter('the_content','matlab');
بعد از انجام دادن این مرحله نوشته این یک متن ثابت به انتهای تمامی پست ها اضافه خواهد شد.
در انتها برای نمایش کاربرد اکشن ها با استفاده از اکشن 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');
تابع apply_filters وردپرس
یکی از توابع مهم در هوک به حساب می آید که در واقع در هسته ی وردپرس و بعضی از افزونه ها وجود دارد و امکان اتصال تابع را ایجاد میکند. نمونه کدی که در زیر آورده شده می تواند مثال خوبی برای عملکرد آن در بخش محتوا باشد:
<p dir="RTL" style="text-align: justify;"> $content = apply_filters( 'the_content', $content ); </p> <p dir="RTL" style="text-align: justify;">
با استفاده از کد بالا می توانیم مطلب دلخواه خودمان را که به کمک تابع apply_filters وردپرس به قسمتthe_content وصل کرده ایم، تغییر دهیم. به صورت قطعه کد زیر:
<p dir="RTL" style="text-align: justify;"> add_action( 'the_content', 'mechanic_english2persian' ); </p> <p dir="RTL" style="text-align: justify;">
پس دقت داشته باشید که هر جا که خواستید امکان اتصال تابع را ایجاد کنید باید از تابع apply_filters وردپرس استفاده کنید و به صورتی به شما توضیح دادیم عمل کنید. این تابع برای افزونه نویسی مهم است و کارایی زیادی دارد.
موفق و پیروز باشید.