আগের প্রায় প্রতিটি lesson-এর functions.php কোড add_action() ব্যবহার করেছে — asset enqueue করা, একটি menu register করা, theme support সেট আপ করা — এর পেছনের system সম্পূর্ণভাবে ব্যাখ্যা না করেই। এই lesson সরাসরি সেই system কভার করে: WordPress-এর hook, যে mechanism একটি theme-কে (বা plugin) WordPress-এর নিজের core file edit না করেই একটি নির্দিষ্ট পয়েন্টে কোড চালাতে দেয়।
| Hook ধরন | উদ্দেশ্য | যা দিয়ে register হয় |
|---|---|---|
| Action | একটি নির্দিষ্ট পয়েন্টে কিছু কোড চালান — কোনো return value আশা করা হয় না | add_action() |
| Filter | একটি data-র অংশ modify করে ফিরিয়ে দিন — সবসময় একটি মান return করে | add_filter() |
// functions.php
function wgh_setup_theme() {
add_theme_support('post-thumbnails');
}
add_action('after_setup_theme', 'wgh_setup_theme');after_setup_theme hook নাম — প্রতিটি page load-এর সময় WordPress পৌঁছায় এমন একটি নির্দিষ্ট মুহূর্ত। add_action() ঠিক সেই মুহূর্তে চালাতে wgh_setup_theme-কে যুক্ত করে।
একটি action-এর মতো না, একটি filter-এর function সবসময় একটি মান পায় আর একটি ফেরত দিতে হয় — প্রায়ই একই মান, বদলে যাওয়া।
// প্রতিটি post excerpt-কে default 55-এর বদলে 15 শব্দে ছোট করুন
function wgh_shorter_excerpt($length) {
return 15;
}
add_filter('excerpt_length', 'wgh_shorter_excerpt');Theme আর plugin শুধু WordPress-এর built-in hook ব্যবহার করে না — এগুলো নিজেরটাও define করতে পারে, অন্য কোডকে (একটি child theme, একটি plugin) আসল file edit না করে একটি নির্দিষ্ট পয়েন্ট extend করতে দেয়।
// আপনার theme-এর header.php-এর ভেতরে, <body>-এর ঠিক পরে
do_action('wgh_after_body_open');
// অন্য যেকোনো জায়গায় — যেমন একটি child theme-এর functions.php —
// এটা এখন স্বয়ংক্রিয়ভাবে ঠিক সেই পয়েন্টে চলে:
add_action('wgh_after_body_open', function () {
echo '<div class="announcement-bar">Free shipping this week!</div>';
});remove_action() আর remove_filter() একটি hook undo করে — পরের lesson-এ কভার করা, একটি child theme থেকে একটি parent theme-এর behavior disable করা দরকার হলে useful।
remove_action('wp_head', 'wp_generator'); // পেজ source থেকে WordPress version number লুকায়সঠিক hook নাম খুঁজে বের করা
একটি নির্দিষ্ট কাজের জন্য কোন hook ব্যবহার করবেন তা খুঁজে বের করার দ্রুত উপায়: developer.wordpress.org-এ নির্দিষ্ট WordPress বা plugin function-এর entry search করুন — এর "Hooks" section এর ভেতরে fire হওয়া প্রতিটি action আর filter list করে।