functions.php প্রতিটি রিকোয়েস্টে স্বয়ংক্রিয়ভাবে চলে, একটি প্লাগইনের মতোই — শুধু এটি যেই থিম সক্রিয় আছে তার মধ্যে সীমাবদ্ধ। এখানেই একটি থিম ঘোষণা করে সে কী সাপোর্ট করে, মেনু আর ইমেজ সাইজ সেটআপ করে, আর যেকোনো কাস্টম লজিক ডিফাইন করে যার উপর টেমপ্লেটগুলো নির্ভর করবে।
WordPress-এর সাথে অনেক ফিচারের একটি দীর্ঘ তালিকা আসে যা একটি থিম একে একে অপ্ট-ইন করতে পারে:
<?php
function mytheme_setup() {
add_theme_support( 'title-tag' );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'custom-logo' );
add_theme_support( 'html5', [ 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ] );
}
add_action( 'after_setup_theme', 'mytheme_setup' );| ফিচার | এটি কী চালু করে |
|---|---|
| title-tag | WordPress-কে নিজেই <title> ট্যাগ ম্যানেজ করতে দেয়, থিমকে হাতে লেখার বদলে |
| post-thumbnails | ফিচার্ড ইমেজ — এটি ছাড়া has_post_thumbnail() কখনো true রিটার্ন করে না |
| custom-logo | Customizer-এ একটি লোগো আপলোড/ক্রপ স্ক্রিন, the_custom_logo() দিয়ে ফিরিয়ে পড়া যায় |
| html5 | তালিকাভুক্ত এলিমেন্টগুলোর জন্য আধুনিক HTML5 মার্কআপ, WordPress-এর পুরনো ডিফল্ট মার্কআপের বদলে |
থিম সেটআপ কোড কখনো সরাসরি functions.php-এর টপ লেভেলে চলে না — এটি একটি ফাংশনে মোড়ানো থাকে আর after_setup_theme অ্যাকশন হুকে সংযুক্ত থাকে, যা WordPress সক্রিয় থিম লোড করা শেষ হলে একবার ফায়ার করে। কিছু ফিচার (যেমন add_theme_support()) সত্যিই এটি দাবি করে — খুব তাড়াতাড়ি কল করলে চুপচাপ ব্যর্থ হয়।
সবকিছুতে প্রিফিক্স দিন
আপনি functions.php-এ যে প্রতিটি ফাংশন ডিফাইন করেন তা WordPress কোর, প্রতিটি সক্রিয় প্লাগইন, আর (কখনো বদলালে) অন্য যেকোনো থিমের সাথে একটি গ্লোবাল নেমস্পেস শেয়ার করে। একই নামের দুটো ফাংশন সাইটকে একটি ফেটাল এররে ক্র্যাশ করায়। সবসময় নিজের ফাংশনের নামের আগে থিমের জন্য নির্দিষ্ট কিছু বসান — mytheme_setup(), শুধু setup() নয়।
শুরুর সেটআপের বাইরেও, functions.php হলো সেই জায়গা যেখানে একটি থিম নেভিগেশন মেনু রেজিস্টার করে (পরের একটি পাঠ), নিজের স্টাইলশিট আর স্ক্রিপ্ট enqueue করে (এটিও পরের একটি পাঠ), আর যেকোনো কাস্টম হেল্পার ফাংশন ডিফাইন করে যা টেমপ্লেট ফাইলগুলো কল করে। একটি থিম বড় হওয়ার সাথে সাথে, একটি functions.php-কে ছড়িয়ে যেতে না দিয়ে এগুলোকে আলাদা include করা ফাইলে ভাগ করা প্রচলিত — কিন্তু সবকিছু শেষ পর্যন্ত এর মধ্য দিয়েই লোড হয়।
পরের পাঠ এর কিছুটা সরাসরি ব্যবহার করে দেখায় — header.php আর footer.php বানানো, সেই দুটো ফাইল যা বাকি প্রতিটি টেমপ্লেট শেয়ার করে।