هوک در وردپرس: چگونه از اکشن و فیلترها استفاده کنیم؟

هوک در وردپرس

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

دو نوع هوک در وردپرس وجود دارد: اکشن action hook و فیلتر filter hook. هوک در وردپرس به اندازه‌ای معمول است که حتی هسته وردپرس از آنها به صورت اختصاصی برای خود استفاده می‌کند. همچنین وردپرس روشی را برای تعریف هوک سفارشی در وردپرس در اختیار توسعه‌دهندگان قرار می‌دهد.

هوک در وردپرس چیست؟

یک صفحه وردپرس از تعداد نامحدودی از توابع و کوئری‌های پایگاه‌داده ساخته شده است. هسته وردپرس، افزونه و پوسته با هم کار می‌کنند تا یک عنصر را در صفحه نمایش دهند؛ مانند متن، تصویر، اسکریپت و یا استایل.

هوک در وردپرس به شما اجازه می‌دهد تا به نقاط مشخصی قلاب خود را پرتاب کنید و کد مورد نظر خود را در آن نقطه اجرا کنید. تابع اصلی هوک‌ در وردپرس است که به شما اجازه تغییر یا افزودن ویژگی به وردپرس را بدون دستکاری فایل‌های اصلی می‌دهد.

با کمک توابع هوک در وردپرس می‌توانید کد مدنظر خود را در تابع جدید قرار دهید. وقتیکه تابع ثبت شد، این کد زمانیکه هوک اجرا شود نیز اجرا خواهد شد. با این روش خروجی پیش‌فرض وردپرس را می‌توانید در نقاط مشخصی از وبسایت خود تغییر دهید.

دو نوع هوک در وردپرس: اکشن و فیلتر

وردپرس دو نوع هوک به نام اکشن و فیلتر دارد. اکشن به شما اجازه می‌دهد تا کاری را در نقطه از پیش تعیین شده در وردپرس خود اجرا کنید در حالیکه فیلتر به شما اجازه می‌دهد تا هر داده‌ای که توسط وردپرس پردازش شده را تغییر دهید و دوباره به اجرا درآورید.

برای مثال اکشن wp_head را در نظر داشته باشید هر زمانیکه هدر وبسایت پردازش شود می‌توانید کد خود را با کمک این هوک در وردپرس به اجرا درآورید.

function hook_css() {
    ?>
        <style>
            .wp_head_example {
                background-color : #f1f1f1;
            }
        </style>
    <?php
}
add_action('wp_head', 'hook_css');

در اکشن بالا، استایل مدنظر خود را در قالب وبسایت خود لود کرده‌اید.

تابعی که برای تغییر خروجی استفاده می‌کنید می‌تواند تابع معمولی در PHP باشد، توابع پیش‌فرض وردپرس یا یک سری توابع سفارشی از پیش تعریف شده باشد.

در حال حاضر بیش از ۲۲۰۰ هوک پیش‌فرض برای وردپرس وجود دارد که با استفاده از این هوک‌ها مشخصا کار برای توسعه وردپرس بسیار آسان و سریع شده است.

فیلتر، اکشن و هوک در وردپرس

هوک در وردپرش روشی برای تغییر/تعامل تکه کد با تکه کدی دیگر است. همانطور که گفته شد دو نوع هوک در وردپرس وجود دارد: اکشن و فیلتر.

اکشن ها در وردپرس Action hooks

در زیر به خصوصیات اکشن Action در وردپرس خواهیم پرداخت:

  • از اکشن‌ها در وردپرس برای اجرای توابع مدنظر در نقطه زمانی مشخص در وردپرس استفاده می‌شود.
  • اکشن‌ها توسط تابع do_action در هسته وردپرس تعریف و ساخته می‌شوند.
  • اکشن‌ها را Action hooks می‌نامند.
  • اکشن‌ها تنها به توابع اکشن قلاب می‌شوند. مثلا add_action و remove_action
  • در توابع اکشن بایستی آرگومان‌ها به توابع تعریف شده انتقال داده شوند.
  • توابع اکشن هر نوع کاری را می‌توانند انجام دهند؛ از جمله تغییر در شیوه عملکرد وردپرس.
  • توابع اکشن نبایستی مقداری را return کنند. اما امکان استفاده از echo برای نمایش خروجی تعامل با پایگاه‌داده وجود دارد.
  • اکش‌ها تقریبا هرچیزی را اجرا می‌کنند.

فیلترها در وردپرس Filter hooks

در زیر به خصوصیات و ویژگی‌های فیلترها در وردپرس اشاره می‌کنیم:

  • از فیلترها در وردپرس برای تغییر یا سفارشی‌سازی داده‌های مورد استفاده در دیگر توابع استفاده می‌شود.
  • فیلترها توسط توابع apply_filters در هسته وردپرس تعریف/ساخته می‌شوند.
  • فیلترها را نیز Filter hooks می‌نامند.
  • فیلترها تنها می‌توانند به توابع فیلتر هوک شوند: add_filter و remove_filter.
  • توابع فیلتر بایستی دستکم یک آرگومان را به تابع تعریف شده در خود انتقال دهند.
  • توابع فیلتر تنها برای تغییر داده‌های انتقال داده شده به خودشان توسط فیلترها ایجاد شده‌اند.
  • توابع فیلتر بایستی تغییرات را به صورت خروجی return کنند. حتی اگر یک تابع فیلتر تغییری ایجاد نکرده باشد هنوز هم بایستی ورودی تغییر داده نشده را return کند.
  • فیلترها بایستی با دقت استفاده شوند تا نتایج ناخواسته‌ای را در خروجی نمایش ندهند.

گاهی پیش می‌آید که می‌توانید از هم اکشن و هم فیلتر برای انجام یک کار استفاده کنید. برای مثال اگر می‌خواهید متن یک پست را تغییر دهید می‌توانید هم از اکشن publish_post استفاده کنید و محتوای پست را زمانیکه در پایگاه‌داده ذخیره می‌شود تغییر دهید.

function change_text_callback() { 
    // add the code to change text here
}

add_action( 'publish_post', 'change_text_callback' );

یا اینکه می‌توانید تابعی را با فیلتر the_content برای تغییر محتوای پست پیش از نمایش در مرورگر کاربر استفاده کنید.

function change_text_another_callback( $content ) { 
    // add the code to change text here and then return it 
    return $filtered_content;
}

add_filter( 'the_content', 'change_text_another_callback');

هوک و توابع آنها را کجا قرار دهم؟

دو روش برای افزودن هوک به وردپرس وجود دارد:

  • افزونه: می‌توانید افزونه خودتان را بسازید و کد سفارشی خود را درون افزونه برای اجرا بر روی وردپرس قرار دهید.
  • پوسته فرزند: هوک و تابع تعریف شده خود را در functions.php پوسته فرزند قالب قرار دهید.

برای ساخت پوسته فرزند از این آموزش استفاده کنید.

استفاده از هوک در وردپرس

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

برای استفاده از هوک ابتدا بایستی هوک را با تابع هوک ثبت کنید و سپس تابع مدنظر خود را در تابع هوک تعریف کنید. وردپرس نیز هر زمانیکه هوک اجرا شود تابع شما را اجرا خواهد کرد.

استفاده از هوک اکشن در وردپرس

به عنوان مثال از اکشن زیر در وردپرس خود برای نمایش پیام «در دست تعمیر» بر روی وردپرس برای بازدیدکنندگان سایت می‌توانید استفاده کنید.

add_action( 'get_header', 'maintenance_message' );
function maintenance_message() {
    if (current_user_can( 'edit_posts' )) return;
    wp_die( '<h1>Stay Pawsitive!</h1><br>Sorry, we\'re temporarily down for maintenance right meow.' );
}
  • get_header اکشنی است که پیش از اینکه فایل هدر پوسته بارگیری شود اجرا خواهد شد. این اکشن، یک هوک خوب برای قرار دادن کد مدنظر پیش از اینکه وبسایت به صورت کامل بارگیری شود است.
  • با کمک تابع add_action به اکشن get_header با تابع maintenance_message قلاب می‌شود.
  • تابع maintenance_message تعریف می‌شود.
  • current_user_can( ‘edit_posts’ ) تابعی است که بررسی می‌کند که آیا کاربری که از صفحه دیدن می‌کند امکان ویرایش پست را دارد یا خیر. هر کاربر ثبت‌نام شده در وردپرس غیر از آنهایی که نقش مشترک را دارند امکان ویرایش پست را خواهند داشت.
  • تابع wp_die اجرای وردپرس را متوقف کرده و صفحه HTML با مقدار مدنظر ما را به کاربر نمایش می‌دهد.

یافتن هوک‌های ثبت شده در یک صفحه وردپرس

بعد از اینکه دانستیم یک هوک در وردپرس چیست و چگونه عمل می‌کند بایستی هوک‌های موجود در یک صفحه را بیابیم.

برای اینکار می‌توانید از افزونه‌هایی مانند Debug Bat و Query Monitor استفاده کنید تا هوک‌های موجود در یک صفحه را به شما نمایش دهند.

یافتن هوک با کمک افزونه Debug Bar

هوک در وردپرس

Debug Bar افزونه رسمی وردپرس است که منوی عیب‌یابی یا دیباگ را به نوار مدیریت وبسایت شما اضافه خواهد کرد. این افزونه اخطار و اعلانات PHP، درخواست‌های کش، کوئری‌های MySQL و دیگر اطلاعات مفید را در اختیار شما قرار می‌دهد.

پس از اینکه افزونه را نصب کردید بایستی تکه کد زیر را به فایل wp-config.php وبسایت خود اضافه کنید تا امکانات عیب‌یابی در وردپرس شما فعال شود.

define( 'WP_DEBUG', true );
define( 'SAVEQUERIES', true );

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

پس از اینکار بایستی افزونه تکمیلی Debug Bar Actions and Filters Addon را بر روی وردپرس خود نصب کنید. با اینکار تب جدیدی برای نمایش هوک ها به دیباگ افزونه اضافه خواهد شد.

یافتن هوک با کمک افزونه Query Monitor

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

برخلاف افزونه Debug Bar نیازی به نصب افزونه تکمیلی نیست و پس از نصب و فعال سازی افزونه امکان مشاهده هوک‌های در دسترس را خواهید داشت.

۵ / ۵. ۲

دیدگاه‌ها

یک پاسخ به “هوک در وردپرس: چگونه از اکشن و فیلترها استفاده کنیم؟”

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

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