এই অংশের আগের প্রতিটি উদাহরণ সরাসরি একটি সাধারণ <link> বা <script> ট্যাগ লিখেছে, একবারে একটি ধারণার উপর ফোকাস রাখার জন্য। একটি আসল থিম এটি কখনো করে না — CSS আর JavaScript এর বদলে wp_enqueue_style() আর wp_enqueue_script()-এর মাধ্যমে লোড হয়।
WordPress সাইট নিয়মিতভাবে ডজনখানেক বা তার বেশি প্লাগইন চালায়, প্রতিটির নিজস্ব CSS আর JS। হার্ডকোড করা ট্যাগের এসব কিছু জানার কোনো উপায় নেই — একটি প্লাগইন একই লাইব্রেরি দুবার লোড করতে পারে, বা আপনার থিমের স্ক্রিপ্ট এমন একটি লাইব্রেরি লোড হওয়ার আগেই চলতে পারে যার উপর এটি নির্ভর করে। Enqueue করা প্রতিটি স্টাইলশিট আর স্ক্রিপ্টকে একটি শেয়ার করা সিস্টেমের মধ্য দিয়ে পাঠায় যা স্বয়ংক্রিয়ভাবে ডিপেন্ডেন্সি ট্র্যাক করতে আর ডুপ্লিকেট এড়াতে পারে।
<?php
function mytheme_enqueue_assets() {
$uri = get_template_directory_uri();
$dir = get_template_directory();
wp_enqueue_style( 'mytheme-style', $uri . '/css/style.css', [], filemtime( $dir . '/css/style.css' ) );
wp_enqueue_script( 'mytheme-main', $uri . '/js/main.js', [ 'jquery' ], filemtime( $dir . '/js/main.js' ), true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_assets' );দুটো ফাংশনই প্রায় একই আর্গুমেন্ট নেয়: একটি ইউনিক হ্যান্ডেল, ফাইলের URL, ডিপেন্ডেন্সি হ্যান্ডেলের একটি অ্যারে, একটি ভার্সন নাম্বার, আর (স্ক্রিপ্টের জন্য) এটি ফুটারে লোড করা হবে কিনা।
| আর্গুমেন্ট | কীসের জন্য |
|---|---|
| handle | একটি ইউনিক নাম যা অন্য কোড রেফারেন্স করতে পারে — উপরে ডিপেন্ডেন্সি হিসেবে 'jquery' WordPress-এর নিজস্ব বান্ডেল করা কপিকে বোঝায়, তাই এটি স্বয়ংক্রিয়ভাবে প্রথমে লোড হয় |
| src | get_template_directory_uri() দিয়ে বানানো, কখনো হার্ডকোড করা পাথ নয় — থিমের নাম বদলালে বা সরালেও এটি এটিকে পোর্টেবল রাখে |
| deps | হ্যান্ডেলের একটি অ্যারে যা প্রথমে লোড হতে হবে — WordPress আপনার জন্য চূড়ান্ত লোড অর্ডার সাজিয়ে দেয় |
| version | filemtime() (ফাইলের সর্বশেষ-পরিবর্তিত সময়) একটি প্রচলিত কৌশল: ফাইল এডিট হওয়ার প্রতিবার এটি স্বয়ংক্রিয়ভাবে বদলায়, যা হাতে ভার্সন নাম্বার না বাড়িয়েই ব্রাউজার ক্যাশ ভেঙে দেয় |
| in_footer (শুধু স্ক্রিপ্টের জন্য) | true স্ক্রিপ্টটিকে <head>-এর বদলে wp_footer()-এর কাছে লোড করে — প্রায় সবসময় যা আপনি চান, কারণ স্ক্রিপ্ট ডাউনলোড হওয়ার সময় এটি পাতা রেন্ডার হতে বাধা দেয় না |
admin_enqueue_scripts নয়
পাবলিক-ফেসিং সাইটের জন্য সঠিক হুক হলো wp_enqueue_scripts। এটি admin_enqueue_scripts-এর (wp-admin স্ক্রিনের জন্য) সাথে গুলিয়ে ফেলা সহজ — ভুলটা ব্যবহার করলে মানে আপনার অ্যাসেট কখনোই লোড হয় না, কেন তা ব্যাখ্যা করার মতো কোনো এরর ছাড়াই।
অ্যাসেট সঠিকভাবে লোড হওয়ার পর, পরের পাঠ প্রতিটি থিমের functions.php-এর কাছে আর যা দরকার তা কাভার করে — নেভিগেশন মেনু রেজিস্টার আর আউটপুট করা।