WordPress "একটি মেনু কোথায় দেখাতে পারে" (থিম দ্বারা নির্ধারিত) থেকে "সেই মেনুতে কী আছে" (সাইট ম্যানেজ করা যে কেউ নির্ধারণ করে) আলাদা করে — এটাই একজন ক্লায়েন্টকে কোনো টেমপ্লেট ফাইল স্পর্শ না করেই নিজের নেভিগেশন সাজাতে দেয়।
<?php
function mytheme_menus() {
register_nav_menus( [
'primary' => __( 'Primary Menu', 'mytheme' ),
'footer' => __( 'Footer Menu', 'mytheme' ),
] );
}
add_action( 'after_setup_theme', 'mytheme_menus' );প্রতিটি এন্ট্রি একটি লোকেশন slug (primary, footer — টেমপ্লেট কোডে রেফারেন্স করা হয়) একটি মানুষের পড়ার মতো লেবেলের সাথে জোড়া (অ্যাডমিনে দেখানো হয়, যেখানে একজন এডিটর Appearance → Menus থেকে সেই স্লটে একটি আসল মেনু বরাদ্দ করেন)।
<?php
wp_nav_menu( [
'theme_location' => 'primary',
'container' => false,
'menu_class' => 'primary-menu',
'fallback_cb' => false,
] );
?>| আর্গুমেন্ট | এটি কী করে |
|---|---|
| theme_location | কোন রেজিস্টার করা স্লট আউটপুট হবে — register_nav_menus()-এর একটি কী-র সাথে মিলতে হবে |
| container | false WordPress ডিফল্টভাবে যোগ করা অতিরিক্ত মোড়ানো <div> বাদ দেয় |
| menu_class | আউটপুট <ul>-এর CSS ক্লাস |
| fallback_cb | false মানে "এখনও কোনো মেনু বরাদ্দ না থাকলে কিছুই আউটপুট করো না" — বিকল্প ডিফল্ট আপনার পেজ থেকে একটি মেনু অনুমান করার চেষ্টা করে, যা একটি সম্পূর্ণ সাইট কালেভদ্রেই চায় |
WordPress ইতিমধ্যে যে লিংকটি দেখা হচ্ছে সেই পাতার সাথে মেলে তাতে একটি current-menu-item ক্লাস যোগ করে দেয় — এই অংশের জন্য অতিরিক্ত কোনো কোড লাগে না। আপনার CSS ফ্রেমওয়ার্ক যদি ভিন্ন একটি ক্লাসের নাম আশা করে (সাধারণত active), একটি ফিল্টার মেনু মার্কআপ স্পর্শ না করেই এটির নাম বদলে দেয়:
<?php
function mytheme_nav_active_class( $classes, $item ) {
if ( in_array( 'current-menu-item', $classes, true ) ) {
$classes[] = 'active';
}
return $classes;
}
add_filter( 'nav_menu_css_class', 'mytheme_nav_active_class', 10, 2 );একটি মেনু বরাদ্দ না হওয়া পর্যন্ত কিছুই দেখা যায় না
Appearance → Menus-এ কমপক্ষে একটি মেনু কোনো লোকেশনে বরাদ্দ না হওয়া পর্যন্ত, fallback_cb: false-সহ wp_nav_menu() শুধু কিছুই আউটপুট করে না — এটাই প্রত্যাশিত, কোনো বাগ নয়। নেভিগেশন কোড আসলে কাজ করছে কিনা তা বিচার করার আগে একটি মেনু বরাদ্দ করুন।
মেনু সামলানো হয়ে গেলে, পরের পাঠ Customizer দেখে — WordPress-এর বিল্ট-ইন, live-preview সেটিংস স্ক্রিন, আর ছোট সাইট-জোড়া অপশনের জন্য একটি সম্পূর্ণ কাস্টম ফিল্ড সেটআপের একটি হালকা বিকল্প।