ওয়ার্ডপ্রেস ব্লক প্যাটার্ন প্লাগইন তৈরির বিস্তারিত টিউটোরিয়াল
🌟 ভূমিকা
আজ আমরা একটি সম্পূর্ণ ওয়ার্ডপ্রেস ব্লক প্যাটার্ন প্লাগইন তৈরি করব টেইলউইন্ড CSS ব্যবহার করে। এই প্লাগইনটি “আমাদের সম্পর্কে” সেকশনের জন্য একটি সুন্দর ব্লক প্যাটার্ন প্রদান করবে, যা আপনি আপনার ওয়ার্ডপ্রেস সাইটে সহজেই ব্যবহার করতে পারবেন।
📂 প্রোজেক্ট স্ট্রাকচার
প্রথমে আমরা আমাদের প্রোজেক্টের ফাইল স্ট্রাকচার বুঝে নেই:
mypatternplugin/
├── mypatternplugin.php # মূল প্লাগইন ফাইল
├── includes/ # ফাংশন ফাইলগুলি
│ └── functions.php # প্লাগইনের মূল ফাংশনগুলি
├── patterns/ # প্যাটার্ন ফাইলগুলি
│ └── aboutus.html # "আমাদের সম্পর্কে" প্যাটার্ন
├── src/ # সোর্স ফাইলগুলি
│ └── tailwind.css # টেইলউইন্ড সোর্স CSS
├── dist/ # কম্পাইল করা ফাইলগুলি
│ └── tailwind.min.css # কম্পাইল করা টেইলউইন্ড CSS
├── package.json # npm প্যাকেজ কনফিগারেশন
├── tailwind.config.js # টেইলউইন্ড কনফিগারেশন
└── postcss.config.js # PostCSS কনফিগারেশন🚀 ধাপ ১: প্রোজেক্ট ফোল্ডার তৈরি করা
প্রথমে, আপনার ওয়ার্ডপ্রেস ইনস্টলেশনের wp-content/plugins/ ফোল্ডারে একটি নতুন ফোল্ডার তৈরি করুন:
cd wp-content/plugins/
mkdir mypatternplugin
cd mypatternpluginএরপর প্রয়োজনীয় সাব-ফোল্ডারগুলি তৈরি করুন:
mkdir includes
mkdir patterns
mkdir src
mkdir dist📄 ধাপ ২: মূল প্লাগইন ফাইল তৈরি করা
এখন আমরা mypatternplugin.php ফাইল তৈরি করব, যা আমাদের প্লাগইনের মূল ফাইল:
touch mypatternplugin.phpএই ফাইলে নিম্নলিখিত কোড লিখুন:
<?php
/**
* Plugin Name: My Pattern Plugin
* Plugin URI: https://yourwebsite.com/
* Description: কাস্টম ব্লক প্যাটার্ন সহ একটি সাধারণ প্লাগইন।
* Version: 1.0
* Author: আপনার নাম
* License: GPL2
*/
// সরাসরি অ্যাক্সেস প্রতিরোধ করুন
if (!defined('ABSPATH')) exit;
// প্লাগইন অ্যাক্টিভেশন হুক
register_activation_hook(__FILE__, 'mypatternplugin_activate');
function mypatternplugin_activate() {
// অ্যাক্টিভেশন লজিক (যদি প্রয়োজন হয়)
}
// প্লাগইন ডিঅ্যাক্টিভেশন হুক
register_deactivation_hook(__FILE__, 'mypatternplugin_deactivate');
function mypatternplugin_deactivate() {
// ডিঅ্যাক্টিভেশন লজিক (যদি প্রয়োজন হয়)
}
// প্লাগইন ফাংশনগুলি লোড করুন
require_once plugin_dir_path(__FILE__) . 'includes/functions.php';🔍 mypatternplugin.php ফাইলের বিস্তারিত ব্যাখ্যা:
/**
* Plugin Name: My Pattern Plugin
* Plugin URI: https://yourwebsite.com/
* Description: কাস্টম ব্লক প্যাটার্ন সহ একটি সাধারণ প্লাগইন।
* Version: 1.0
* Author: আপনার নাম
* License: GPL2
*/এই অংশটি ওয়ার্ডপ্রেসকে জানায় যে এটি একটি প্লাগইন এবং প্লাগইনের বিবরণ প্রদান করে। এই তথ্যগুলি ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলের প্লাগইন পেজে দেখানো হবে।
সরাসরি অ্যাক্সেস প্রতিরোধ:
if (!defined('ABSPATH')) exit;এই লাইনটি নিশ্চিত করে যে কেউ সরাসরি এই ফাইল অ্যাক্সেস করতে পারবে না। এটি একটি সিকিউরিটি মেজার। ABSPATH হল ওয়ার্ডপ্রেসের একটি কনস্ট্যান্ট যা শুধুমাত্র ওয়ার্ডপ্রেস লোড হলেই ডিফাইন করা হয়।
অ্যাক্টিভেশন হুক:
register_activation_hook(__FILE__, 'mypatternplugin_activate');
function mypatternplugin_activate() {
// অ্যাক্টিভেশন লজিক (যদি প্রয়োজন হয়)
}এই কোডটি প্লাগইন অ্যাক্টিভেট করার সময় mypatternplugin_activate ফাংশন চালাবে। এখানে আপনি ডাটাবেস টেবিল তৈরি করা, ডিফল্ট অপশন সেট করা ইত্যাদি কাজ করতে পারেন।
ডিঅ্যাক্টিভেশন হুক:
register_deactivation_hook(__FILE__, 'mypatternplugin_deactivate');
function mypatternplugin_deactivate() {
// ডিঅ্যাক্টিভেশন লজিক (যদি প্রয়োজন হয়)
}এই কোডটি প্লাগইন ডিঅ্যাক্টিভেট করার সময় mypatternplugin_deactivate ফাংশন চালাবে। এখানে আপনি ক্লিনআপ অপারেশন করতে পারেন।
ফাংশন ফাইল লোড করা:
require_once plugin_dir_path(__FILE__) . 'includes/functions.php';- এই লাইনটি
includes/functions.phpফাইল লোড করে, যেখানে আমাদের প্লাগইনের মূল ফাংশনালিটি থাকবে।plugin_dir_path(__FILE__)ফাংশনটি বর্তমান প্লাগইন ফোল্ডারের পূর্ণ পাথ রিটার্ন করে।
📄 ধাপ ৩: functions.php ফাইল তৈরি করা
এখন আমরা includes/functions.php ফাইল তৈরি করব, যেখানে আমাদের প্লাগইনের মূল ফাংশনালিটি থাকবে:
touch includes/functions.phpএই ফাইলে নিম্নলিখিত কোড লিখুন:
<?php
// সরাসরি অ্যাক্সেস প্রতিরোধ করুন
if (!defined('ABSPATH')) exit;
// কাস্টম ক্যাটাগরি রেজিস্টার করুন
function mypatternplugin_register_pattern_category() {
register_block_pattern_category(
'mypatternplugin',
array('label' => __('আমার প্যাটার্ন', 'mypatternplugin'))
);
}
add_action('init', 'mypatternplugin_register_pattern_category', 9);
// "About Us" প্যাটার্ন রেজিস্টার করুন
function mypatternplugin_register_aboutus_pattern() {
$pattern_file = plugin_dir_path(__DIR__) . 'patterns/aboutus.html';
// ফাইল আছে কিনা চেক করুন
if (file_exists($pattern_file)) {
register_block_pattern(
'mypatternplugin/aboutus',
array(
'title' => __('আমাদের সম্পর্কে', 'mypatternplugin'),
'description' => __('একটি সুন্দর "আমাদের সম্পর্কে" সেকশন।', 'mypatternplugin'),
'categories' => array('mypatternplugin'),
'content' => file_get_contents($pattern_file)
)
);
}
}
add_action('init', 'mypatternplugin_register_aboutus_pattern');
// স্টাইল এনকিউ করুন
function mypatternplugin_enqueue_styles() {
$css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css';
// ফাইল আছে কিনা চেক করুন
if (file_exists($css_file)) {
wp_enqueue_style(
'mypatternplugin-styles',
plugins_url('dist/tailwind.min.css', __DIR__),
array(),
filemtime($css_file)
);
}
}
// ফ্রন্টএন্ডে স্টাইল লোড করুন
add_action('wp_enqueue_scripts', 'mypatternplugin_enqueue_styles');
// অ্যাডমিন এরিয়াতে স্টাইল লোড করুন
add_action('admin_enqueue_scripts', 'mypatternplugin_enqueue_styles');
// ব্লক এডিটরে স্টাইল লোড করুন
add_action('enqueue_block_editor_assets', 'mypatternplugin_enqueue_styles');
// ব্লক এডিটরে ইনলাইন স্টাইল যোগ করুন
function mypatternplugin_add_editor_inline_styles() {
$css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css';
// ফাইল আছে কিনা চেক করুন
if (file_exists($css_file)) {
wp_add_inline_style('wp-edit-blocks', file_get_contents($css_file));
}
}
add_action('enqueue_block_editor_assets', 'mypatternplugin_add_editor_inline_styles');🔍 functions.php ফাইলের বিস্তারিত ব্যাখ্যা:
1️⃣ সরাসরি অ্যাক্সেস প্রতিরোধ করা:
if (!defined('ABSPATH')) exit;🔹 এই লাইনটি নিশ্চিত করে যে কেউ সরাসরি এই ফাইল অ্যাক্সেস করতে পারবে না।
🔹 ABSPATH হল ওয়ার্ডপ্রেসের একটি কনস্ট্যান্ট যা শুধুমাত্র ওয়ার্ডপ্রেস লোড হলেই ডিফাইন করা হয়।
🔹 যদি কেউ ব্রাউজার থেকে সরাসরি এই ফাইল অ্যাক্সেস করার চেষ্টা করে, তাহলে exit কমান্ড স্ক্রিপ্ট এক্সিকিউশন বন্ধ করে দেবে।
2️⃣ কাস্টম ব্লক প্যাটার্ন ক্যাটাগরি রেজিস্টার করা:
function mypatternplugin_register_pattern_category() {
register_block_pattern_category(
'mypatternplugin',
array('label' => __('আমার প্যাটার্ন', 'mypatternplugin'))
);
}
add_action('init', 'mypatternplugin_register_pattern_category', 9);🔹 mypatternplugin_register_pattern_category ফাংশনটি একটি নতুন ব্লক প্যাটার্ন ক্যাটাগরি রেজিস্টার করে।
🔹 register_block_pattern_category() হল ওয়ার্ডপ্রেসের একটি ফাংশন যা নতুন ব্লক প্যাটার্ন ক্যাটাগরি তৈরি করে।
🔹 প্রথম প্যারামিটার 'mypatternplugin' হল ক্যাটাগরির আইডি।
🔹 দ্বিতীয় প্যারামিটার একটি অ্যারে যেখানে 'label' কী-তে ক্যাটাগরির প্রদর্শিত নাম সেট করা হয়েছে।
🔹 __('আমার প্যাটার্ন', 'mypatternplugin') ফাংশনটি ওয়ার্ডপ্রেসের ট্রান্সলেশন ফাংশন, যা টেক্সটকে অনুবাদযোগ্য করে।
🔹 add_action('init', 'mypatternplugin_register_pattern_category', 9); লাইনটি ওয়ার্ডপ্রেসের init হুকে এই ফাংশনটি যুক্ত করে, যাতে ওয়ার্ডপ্রেস ইনিশিয়ালাইজেশনের সময় এটি চালানো হয়।
🔹 9 হল প্রায়োরিটি, যা নির্দেশ করে এই ফাংশনটি কখন চালানো হবে। ছোট সংখ্যা মানে আগে চালানো হবে।
3️⃣ “About Us” প্যাটার্ন রেজিস্টার করা:
function mypatternplugin_register_aboutus_pattern() {
$pattern_file = plugin_dir_path(__DIR__) . 'patterns/aboutus.html';
// ফাইল আছে কিনা চেক করুন
if (file_exists($pattern_file)) {
register_block_pattern(
'mypatternplugin/aboutus',
array(
'title' => __('আমাদের সম্পর্কে', 'mypatternplugin'),
'description' => __('একটি সুন্দর "আমাদের সম্পর্কে" সেকশন।', 'mypatternplugin'),
'categories' => array('mypatternplugin'),
'content' => file_get_contents($pattern_file)
)
);
}
}
add_action('init', 'mypatternplugin_register_aboutus_pattern');mypatternplugin_register_aboutus_pattern ফাংশনটি “আমাদের সম্পর্কে” প্যাটার্ন রেজিস্টার করে।
🔹 $pattern_file = plugin_dir_path(__DIR__) . 'patterns/aboutus.html'; লাইনটি aboutus.html ফাইলের পূর্ণ পাথ সেট করে।
🔹 plugin_dir_path(__DIR__) ফাংশনটি প্লাগইন ফোল্ডারের পূর্ণ পাথ রিটার্ন করে। __DIR__ হল বর্তমান ফোল্ডারের পাথ।
🔹 if (file_exists($pattern_file)) { ... } ব্লকটি চেক করে যে aboutus.html ফাইলটি আছে কিনা। যদি থাকে, তাহলে প্যাটার্ন রেজিস্টার করা হবে।
🔹 register_block_pattern() ফাংশনটি একটি নতুন ব্লক প্যাটার্ন রেজিস্টার করে।
🔹 প্রথম প্যারামিটার 'mypatternplugin/aboutus' হল প্যাটার্নের আইডি।
🔹 দ্বিতীয় প্যারামিটার একটি অ্যারে যেখানে প্যাটার্নের বিভিন্ন প্রোপার্টি সেট করা হয়েছে:
'title': প্যাটার্নের প্রদর্শিত নাম'description': প্যাটার্নের বিবরণ'categories': প্যাটার্নটি কোন ক্যাটাগরিতে থাকবে'content': প্যাটার্নের HTML কন্টেন্ট, যাfile_get_contents($pattern_file)দিয়েaboutus.htmlফাইল থেকে লোড করা হয়েছে
🔹add_action('init', 'mypatternplugin_register_aboutus_pattern');লাইনটি ওয়ার্ডপ্রেসেরinitহুকে এই ফাংশনটি যুক্ত করে।
4️⃣ স্টাইল এনকিউ করা:
function mypatternplugin_enqueue_styles() {
$css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css';
// ফাইল আছে কিনা চেক করুন
if (file_exists($css_file)) {
wp_enqueue_style(
'mypatternplugin-styles',
plugins_url('dist/tailwind.min.css', __DIR__),
array(),
filemtime($css_file)
);
}
}🔹 mypatternplugin_enqueue_styles ফাংশনটি টেইলউইন্ড CSS ফাইল লোড করে।
🔹 $css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css'; লাইনটি কম্পাইল করা টেইলউইন্ড CSS ফাইলের পূর্ণ পাথ সেট করে।
🔹 if (file_exists($css_file)) { ... } ব্লকটি চেক করে যে CSS ফাইলটি আছে কিনা। যদি থাকে, তাহলে এটি লোড করা হবে।
🔹 wp_enqueue_style() ফাংশনটি ওয়ার্ডপ্রেসে CSS ফাইল লোড করে। এর প্যারামিটারগুলি হল:
'mypatternplugin-styles': স্টাইলের হ্যান্ডেল (আইডি)plugins_url('dist/tailwind.min.css', __DIR__): CSS ফাইলের URLarray(): ডিপেন্ডেন্সি (এখানে কোন ডিপেন্ডেন্সি নেই)filemtime($css_file): ভার্সন নম্বর, যা ফাইলের লাস্ট মডিফিকেশন টাইম থেকে নেওয়া হয়েছে। এটি ক্যাশিং সমস্যা এড়াতে সাহায্য করে।
5️⃣ বিভিন্ন জায়গায় স্টাইল লোড করা:
// ফ্রন্টএন্ডে স্টাইল লোড করুন
add_action('wp_enqueue_scripts', 'mypatternplugin_enqueue_styles');
// অ্যাডমিন এরিয়াতে স্টাইল লোড করুন
add_action('admin_enqueue_scripts', 'mypatternplugin_enqueue_styles');
// ব্লক এডিটরে স্টাইল লোড করুন
add_action('enqueue_block_editor_assets', 'mypatternplugin_enqueue_styles');🔹 add_action('wp_enqueue_scripts', 'mypatternplugin_enqueue_styles'); লাইনটি ফ্রন্টএন্ডে (ওয়েবসাইটের ভিজিটর-ফেসিং পার্টে) স্টাইল লোড করে।
🔹 add_action('admin_enqueue_scripts', 'mypatternplugin_enqueue_styles'); লাইনটি অ্যাডমিন এরিয়াতে (ওয়ার্ডপ্রেস ড্যাশবোর্ডে) স্টাইল লোড করে।
🔹 add_action('enqueue_block_editor_assets', 'mypatternplugin_enqueue_styles'); লাইনটি ব্লক এডিটরে (গুটেনবার্গ এডিটরে) স্টাইল লোড করে।
6️⃣ ব্লক এডিটরে ইনলাইন স্টাইল যোগ করা:
function mypatternplugin_add_editor_inline_styles() {
$css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css';
// ফাইল আছে কিনা চেক করুন
if (file_exists($css_file)) {
wp_add_inline_style('wp-edit-blocks', file_get_contents($css_file));
}
}
add_action('enqueue_block_editor_assets', 'mypatternplugin_add_editor_inline_styles');🔹 mypatternplugin_add_editor_inline_styles ফাংশনটি ব্লক এডিটরে ইনলাইন স্টাইল যোগ করে।
🔹 $css_file = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css'; লাইনটি কম্পাইল করা টেইলউইন্ড CSS ফাইলের পূর্ণ পাথ সেট করে।
🔹 if (file_exists($css_file)) { ... } ব্লকটি চেক করে যে CSS ফাইলটি আছে কিনা।
🔹 wp_add_inline_style('wp-edit-blocks', file_get_contents($css_file)); লাইনটি wp-edit-blocks হ্যান্ডেলের সাথে ইনলাইন CSS যোগ করে। file_get_contents($css_file) ফাংশনটি CSS ফাইলের কন্টেন্ট পড়ে।
🔹 add_action('enqueue_block_editor_assets', 'mypatternplugin_add_editor_inline_styles'); লাইনটি ব্লক এডিটর লোড হওয়ার সময় এই ফাংশনটি চালায়।
আপনি যদি আগের CSS (tailwind.min.css) সহ নতুন CSS (custom-style.css) এবং নতুন JS (custom-script.js) এনকিউ করতে চান, তাহলে নিচের মতো কোড লিখতে হবে।
// সরাসরি অ্যাক্সেস প্রতিরোধ করুন
if (!defined('ABSPATH')) exit;
// কাস্টম CSS ও JS এনকিউ করার ফাংশন
function mypatternplugin_enqueue_assets() {
// Tailwind CSS ফাইল পাথ
$tailwind_css = plugin_dir_path(__DIR__) . 'dist/tailwind.min.css';
// Custom CSS ফাইল পাথ
$custom_css = plugin_dir_path(__DIR__) . 'dist/custom-style.css';
// Custom JS ফাইল পাথ
$custom_js = plugin_dir_path(__DIR__) . 'dist/custom-script.js';
// Tailwind CSS লোড করুন (যদি ফাইল থাকে)
if (file_exists($tailwind_css)) {
wp_enqueue_style(
'mypatternplugin-tailwind', // হ্যান্ডেল নাম
plugins_url('dist/tailwind.min.css', __DIR__), // ফাইল URL
array(), // নির্ভরশীলতা নেই
filemtime($tailwind_css) // ফাইল আপডেট হলে ক্যাশ রিফ্রেশ হবে
);
}
// Custom CSS লোড করুন (যদি ফাইল থাকে)
if (file_exists($custom_css)) {
wp_enqueue_style(
'mypatternplugin-custom-style', // হ্যান্ডেল নাম
plugins_url('dist/custom-style.css', __DIR__), // ফাইল URL
array(), // নির্ভরশীলতা নেই
filemtime($custom_css) // ফাইল আপডেট হলে ক্যাশ রিফ্রেশ হবে
);
}
// Custom JS লোড করুন (যদি ফাইল থাকে)
if (file_exists($custom_js)) {
wp_enqueue_script(
'mypatternplugin-custom-script', // হ্যান্ডেল নাম
plugins_url('dist/custom-script.js', __DIR__), // ফাইল URL
array('jquery'), // নির্ভরশীলতা (jQuery দরকার হলে)
filemtime($custom_js), // ফাইল আপডেট হলে ক্যাশ রিফ্রেশ হবে
true // স্ক্রিপ্টটি ফুটারে লোড হবে
);
}
}
// ফ্রন্টএন্ড, অ্যাডমিন, এবং ব্লক এডিটরে লোড করুন
add_action('wp_enqueue_scripts', 'mypatternplugin_enqueue_assets');
add_action('admin_enqueue_scripts', 'mypatternplugin_enqueue_assets');
add_action('enqueue_block_editor_assets', 'mypatternplugin_enqueue_assets');
আপনার ফোল্ডারে রাখতে হবে:
✅ dist/tailwind.min.css (আগের Tailwind CSS)
✅ dist/custom-style.css (নতুন CSS)
✅ dist/custom-script.js (নতুন JS)
কীভাবে এটা কাজ করবে?
tailwind.min.cssআগের মতোই লোড হবে।custom-style.cssনতুন স্টাইল ফাইল হিসেবে যুক্ত হবে।custom-script.jsনতুন স্ক্রিপ্ট হিসেবে যুক্ত হবে।- এগুলো ফ্রন্টএন্ড, অ্যাডমিন প্যানেল, এবং ব্লক এডিটরে কাজ করবে।
- CSS/JS ফাইল পরিবর্তন করলে
filemtime()ব্যবহার করে ক্যাশিং রিফ্রেশ হবে।
📄 ধাপ ৪: “About Us” প্যাটার্ন তৈরি করা
এখন আমরা patterns/aboutus.html ফাইল তৈরি করব, যেখানে আমাদের “আমাদের সম্পর্কে” প্যাটার্নের HTML থাকবে:
touch patterns/aboutus.htmlএই ফাইলে নিম্নলিখিত কোড লিখুন:
<!-- wp:group {"className":"bg-gray-100 py-16"} -->
<div class="wp-block-group bg-gray-100 py-16">
<!-- wp:group {"className":"container mx-auto px-4"} -->
<div class="wp-block-group container mx-auto px-4">
<!-- wp:heading {"textAlign":"center","className":"text-3xl font-bold mb-8 text-gray-800"} -->
<h2 class="wp-block-heading has-text-align-center text-3xl font-bold mb-8 text-gray-800">আমাদের সম্পর্কে</h2>
<!-- /wp:heading -->
<!-- wp:columns {"className":"md:flex md:flex-wrap"} -->
<div class="wp-block-columns md:flex md:flex-wrap">
<!-- wp:column {"className":"md:w-1/2 lg:w-1/3 p-4"} -->
<div class="wp-block-column md:w-1/2 lg:w-1/3 p-4">
<!-- wp:group {"className":"bg-white rounded-lg shadow-md p-6 h-full"} -->
<div class="wp-block-group bg-white rounded-lg shadow-md p-6 h-full">
<!-- wp:image {"align":"center","width":64,"height":64,"className":"mb-4"} -->
<figure class="wp-block-image aligncenter size-large is-resized mb-4"><img src="https://via.placeholder.com/64" alt="মিশন আইকন" width="64" height="64"/></figure>
<!-- /wp:image -->
<!-- wp:heading {"textAlign":"center","level":3,"className":"text-xl font-semibold mb-3 text-gray-800"} -->
<h3 class="wp-block-heading has-text-align-center text-xl font-semibold mb-3 text-gray-800">আমাদের মিশন</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"align":"center","className":"text-gray-600"} -->
<p class="has-text-align-center text-gray-600">আমাদের মিশন হল উচ্চমানের পণ্য এবং সেবা প্রদান করা যা আমাদের গ্রাহকদের জীবনকে সহজ এবং আরও উন্নত করে।</p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:column -->
<!-- wp:column {"className":"md:w-1/2 lg:w-1/3 p-4"} -->
<div class="wp-block-column md:w-1/2 lg:w-1/3 p-4">
<!-- wp:group {"className":"bg-white rounded-lg shadow-md p-6 h-full"} -->
<div class="wp-block-group bg-white rounded-lg shadow-md p-6 h-full">
<!-- wp:image {"align":"center","width":64,"height":64,"className":"mb-4"} -->
<figure class="wp-block-image aligncenter size-large is-resized mb-4"><img src="https://via.placeholder.com/64" alt="ভিশন আইকন" width="64" height="64"/></figure>
<!-- /wp:image -->
<!-- wp:heading {"textAlign":"center","level":3,"className":"text-xl font-semibold mb-3 text-gray-800"} -->
<h3 class="wp-block-heading has-text-align-center text-xl font-semibold mb-3 text-gray-800">আমাদের ভিশন</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"align":"center","className":"text-gray-600"} -->
<p class="has-text-align-center text-gray-600">আমাদের ভিশন হল আমাদের ক্ষেত্রে একটি অগ্রণী প্রতিষ্ঠান হওয়া এবং নতুন উদ্ভাবনের মাধ্যমে শিল্পকে এগিয়ে নিয়ে যাওয়া।</p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:column -->
<!-- wp:column {"className":"md:w-1/2 lg:w-1/3 p-4"} -->
<div class="wp-block-column md:w-1/2 lg:w-1/3 p-4">
<!-- wp:group {"className":"bg-white rounded-lg shadow-md p-6 h-full"} -->
<div class="wp-block-group bg-white rounded-lg shadow-md p-6 h-full">
<!-- wp:image {"align":"center","width":64,"height":64,"className":"mb-4"} -->
<figure class="wp-block-image aligncenter size-large is-resized mb-4"><img src="https://via.placeholder.com/64" alt="মূল্যবোধ আইকন" width="64" height="64"/></figure>
<!-- /wp:image -->
<!-- wp:heading {"textAlign":"center","level":3,"className":"text-xl font-semibold mb-3 text-gray-800"} -->
<h3 class="wp-block-heading has-text-align-center text-xl font-semibold mb-3 text-gray-800">আমাদের মূল্যবোধ</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"align":"center","className":"text-gray-600"} -->
<p class="has-text-align-center text-gray-600">আমরা সততা, স্বচ্ছতা এবং গ্রাহক সন্তুষ্টিকে সর্বোচ্চ অগ্রাধিকার দেই। আমাদের সমস্ত কার্যকলাপে এই মূল্যবোধগুলি প্রতিফলিত হয়।</p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:column -->
</div>
<!-- /wp:columns -->
<!-- wp:group {"className":"mt-12 text-center"} -->
<div class="wp-block-group mt-12 text-center">
<!-- wp:paragraph {"className":"text-gray-700 max-w-3xl mx-auto"} -->
<p class="text-gray-700 max-w-3xl mx-auto">আমাদের কোম্পানি ২০১০ সালে প্রতিষ্ঠিত হয়েছিল এবং তখন থেকে আমরা হাজার হাজার সন্তুষ্ট গ্রাহককে সেবা দিয়ে আসছি। আমাদের দক্ষ টিম সর্বদা আপনাকে সর্বোত্তম সেবা প্রদানের জন্য প্রস্তুত।</p>
<!-- /wp:paragraph -->
<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"},"className":"mt-6"} -->
<div class="wp-block-buttons mt-6">
<!-- wp:button {"className":"bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-6 rounded-lg transition duration-300"} -->
<div class="wp-block-button bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-6 rounded-lg transition duration-300"><a class="wp-block-button__link wp-element-button">আরও জানুন</a></div>
<!-- /wp:button -->
</div>
<!-- /wp:buttons -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:group -->🔍 aboutus.html ফাইলের বিস্তারিত ব্যাখ্যা:
এই HTML ফাইলটি ওয়ার্ডপ্রেস ব্লক এডিটরের ফরম্যাটে লেখা হয়েছে। এটি একটি “আমাদের সম্পর্কে” সেকশন তৈরি করে যেখানে তিনটি কলাম আছে: মিশন, ভিশন, এবং মূল্যবোধ।
- মূল কন্টেইনার:
<!-- wp:group {"className":"bg-gray-100 py-16"} -->
<div class="wp-block-group bg-gray-100 py-16">এটি একটি গ্রুপ ব্লক যা পুরো সেকশনকে ধারণ করে। bg-gray-100 ক্লাসটি হালকা ধূসর ব্যাকগ্রাউন্ড যোগ করে, এবং py-16 ক্লাসটি উপরে ও নীচে প্যাডিং যোগ করে।
ইনার কন্টেইনার:
<!-- wp:group {"className":"container mx-auto px-4"} -->
<div class="wp-block-group container mx-auto px-4">এটি একটি ইনার কন্টেইনার যা কন্টেন্টকে সেন্টারে রাখে। container ক্লাসটি টেইলউইন্ড CSS-এর একটি ক্লাস যা কন্টেন্টকে একটি নির্দিষ্ট প্রস্থে সীমাবদ্ধ করে, mx-auto ক্লাসটি কন্টেইনারকে সেন্টারে রাখে, এবং px-4 ক্লাসটি বাম ও ডান দিকে প্যাডিং যোগ করে।
শিরোনাম:
<!-- wp:heading {"textAlign":"center","className":"text-3xl font-bold mb-8 text-gray-800"} -->
<h2 class="wp-block-heading has-text-align-center text-3xl font-bold mb-8 text-gray-800">আমাদের সম্পর্কে</h2>এটি একটি হেডিং ব্লক যা “আমাদের সম্পর্কে” টেক্সট প্রদর্শন করে। text-3xl ক্লাসটি ফন্ট সাইজ বড় করে, font-bold ক্লাসটি ফন্টকে বোল্ড করে, mb-8 ক্লাসটি নীচে মার্জিন যোগ করে, এবং text-gray-800 ক্লাসটি টেক্সট কালার সেট করে।
কলাম লেআউট:
<!-- wp:columns {"className":"md:flex md:flex-wrap"} -->
<div class="wp-block-columns md:flex md:flex-wrap">এটি একটি কলাম ব্লক যা তিনটি কলাম তৈরি করে। md:flex এবং md:flex-wrap ক্লাসগুলি মিডিয়াম স্ক্রিন সাইজে ফ্লেক্স লেআউট সেট করে।
প্রতিটি কলাম:
<!-- wp:column {"className":"md:w-1/2 lg:w-1/3 p-4"} -->
<div class="wp-block-column md:w-1/2 lg:w-1/3 p-4">এটি একটি কলাম ব্লক। md:w-1/2 ক্লাসটি মিডিয়াম স্ক্রিন সাইজে কলামের প্রস্থ 50% সেট করে, lg:w-1/3 ক্লাসটি লার্জ স্ক্রিন সাইজে কলামের প্রস্থ 33.33% সেট করে, এবং p-4 ক্লাসটি প্যাডিং যোগ করে।
কার্ড লেআউট:
<!-- wp:group {"className":"bg-white rounded-lg shadow-md p-6 h-full"} -->
<div class="wp-block-group bg-white rounded-lg shadow-md p-6 h-full">এটি একটি গ্রুপ ব্লক যা একটি কার্ড তৈরি করে। bg-white ক্লাসটি সাদা ব্যাকগ্রাউন্ড যোগ করে, rounded-lg ক্লাসটি কোণগুলি গোল করে, shadow-md ক্লাসটি শ্যাডো যোগ করে, p-6 ক্লাসটি প্যাডিং যোগ করে, এবং h-full ক্লাসটি কার্ডের উচ্চতা 100% সেট করে।
ইমেজ:
<!-- wp:image {"align":"center","width":64,"height":64,"className":"mb-4"} -->
<figure class="wp-block-image aligncenter size-large is-resized mb-4"><img src="https://via.placeholder.com/64" alt="মিশন আইকন" width="64" height="64"/></figure>এটি একটি ইমেজ ব্লক। aligncenter ক্লাসটি ইমেজকে সেন্টারে রাখে, mb-4 ক্লাসটি নীচে মার্জিন যোগ করে, এবং width="64" height="64" অ্যাট্রিবিউটগুলি ইমেজের সাইজ সেট করে।
সাব-হেডিং:
<!-- wp:heading {"textAlign":"center","level":3,"className":"text-xl font-semibold mb-3 text-gray-800"} -->
<h3 class="wp-block-heading has-text-align-center text-xl font-semibold mb-3 text-gray-800">আমাদের মিশন</h3>এটি একটি হেডিং ব্লক যা “আমাদের মিশন” টেক্সট প্রদর্শন করে। level":3 প্যারামিটারটি এটিকে h3 ট্যাগ হিসেবে রেন্ডার করে।
প্যারাগ্রাফ:
<!-- wp:paragraph {"align":"center","className":"text-gray-600"} -->
<p class="has-text-align-center text-gray-600">আমাদের মিশন হল উচ্চমানের পণ্য এবং সেবা প্রদান করা যা আমাদের গ্রাহকদের জীবনকে সহজ এবং আরও উন্নত করে।</p>এটি একটি প্যারাগ্রাফ ব্লক। has-text-align-center ক্লাসটি টেক্সটকে সেন্টারে রাখে, এবং text-gray-600 ক্লাসটি টেক্সট কালার সেট করে।
বাটন সেকশন:
<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"},"className":"mt-6"} -->
<div class="wp-block-buttons mt-6">
<!-- wp:button {"className":"bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-6 rounded-lg transition duration-300"} -->
<div class="wp-block-button bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-6 rounded-lg transition duration-300"><a class="wp-block-button__link wp-element-button">আরও জানুন</a></div>
<!-- /wp:button -->
</div>এটি একটি বাটন সেকশন। mt-6 ক্লাসটি উপরে মার্জিন যোগ করে। বাটনটি নীল রঙের এবং হোভার করলে গাঢ় নীল হয়ে যায়।
📄 ধাপ ৫: টেইলউইন্ড CSS সেটআপ করা
এখন আমরা টেইলউইন্ড CSS সেটআপ করব। প্রথমে, src/tailwind.css ফাইল তৈরি করুন:
touch src/tailwind.cssএই ফাইলে নিম্নলিখিত কোড লিখুন:
@tailwind base;
@tailwind components;
@tailwind utilities;
/* কাস্টম স্টাইল এখানে যোগ করুন */এই ফাইলটি টেইলউইন্ড CSS-এর মূল ডিরেক্টিভগুলি ব্যবহার করে:
- @tailwind base:
এটি টেইলউইন্ড CSS-এর বেস স্টাইলগুলি ইম্পোর্ট করে, যেমন রিসেট স্টাইল এবং ডিফল্ট ফন্ট সাইজ। - @tailwind components:
এটি টেইলউইন্ড CSS-এর কম্পোনেন্ট স্টাইলগুলি ইম্পোর্ট করে। - @tailwind utilities:
এটি টেইলউইন্ড CSS-এর ইউটিলিটি ক্লাসগুলি ইম্পোর্ট করে, যেমনflex,p-4,text-centerইত্যাদি। - কাস্টম স্টাইল:
এই কমেন্টের নীচে আপনি আপনার নিজের কাস্টম CSS লিখতে পারেন।
📄 ধাপ ৬: npm প্রোজেক্ট সেটআপ করা
এখন আমরা npm প্রোজেক্ট সেটআপ করব। টার্মিনালে নিম্নলিখিত কমান্ড চালান:
npm init -yএটি একটি বেসিক package.json ফাইল তৈরি করবে। এখন এই ফাইলটি সম্পাদনা করুন:
{
"name": "mypatternplugin",
"version": "1.0.0",
"description": "WordPress Block Pattern Plugin with Tailwind CSS",
"scripts": {
"dev": "postcss src/tailwind.css -o dist/tailwind.min.css --watch",
"build": "cross-env NODE_ENV=production postcss src/tailwind.css -o dist/tailwind.min.css"
},
"keywords": [
"wordpress",
"plugin",
"block-pattern",
"tailwindcss"
],
"author": "আপনার নাম",
"license": "GPL-2.0"
}🔍 package.json ফাইলের বিস্তারিত ব্যাখ্যা:
এই ফাইলটি npm প্রোজেক্টের কনফিগারেশন ধারণ করে:
- name: প্রোজেক্টের নাম।
- version: প্রোজেক্টের ভার্সন।
- description: প্রোজেক্টের বিবরণ।
- scripts: npm স্ক্রিপ্টগুলি:
- dev: ডেভেলপমেন্ট মোডে টেইলউইন্ড CSS কম্পাইল করে এবং ফাইল পরিবর্তন হলে স্বয়ংক্রিয়ভাবে আপডেট করে।
- build: প্রোডাকশন মোডে টেইলউইন্ড CSS কম্পাইল করে, যা অপ্টিমাইজড এবং মিনিফাইড হয়।
- keywords: প্রোজেক্টের কীওয়ার্ডগুলি।
- author: প্রোজেক্টের লেখক।
- license: প্রোজেক্টের লাইসেন্স।
📄 ধাপ ৭: প্রয়োজনীয় npm প্যাকেজ ইনস্টল করা
এখন আমরা প্রয়োজনীয় npm প্যাকেজগুলি ইনস্টল করব। টার্মিনালে নিম্নলিখিত কমান্ড চালান:
npm install --save-dev tailwindcss@3.4.1 postcss autoprefixer cssnano postcss-cli cross-envএই কমান্ডটি নিম্নলিখিত প্যাকেজগুলি ইনস্টল করবে:
- tailwindcss@3.4.1: টেইলউইন্ড CSS ফ্রেমওয়ার্ক (ভার্সন 3.4.1)
- postcss: CSS প্রসেসর
- autoprefixer: CSS ভেন্ডর প্রিফিক্স যোগ করে
- cssnano: CSS মিনিফাই করে
- postcss-cli: কমান্ড লাইন থেকে PostCSS চালানোর টুল
- cross-env: ক্রস-প্ল্যাটফর্ম এনভায়রনমেন্ট ভেরিয়েবল সেট করার টুল
🔍 প্যাকেজগুলির বিস্তারিত ব্যাখ্যা:
- tailwindcss:
টেইলউইন্ড CSS হল একটি ইউটিলিটি-ফার্স্ট CSS ফ্রেমওয়ার্ক যা আপনাকে ক্লাস নেম ব্যবহার করে স্টাইল যোগ করতে দেয়। আমরা ভার্সন 3.4.1 ব্যবহার করছি, যা স্থিতিশীল এবং ওয়ার্ডপ্রেসের সাথে ভালভাবে কাজ করে। - postcss:
PostCSS হল একটি টুল যা CSS প্রসেসিং করে। এটি প্লাগইন ব্যবহার করে CSS ট্রান্সফর্ম করে। - autoprefixer:
Autoprefixer হল একটি PostCSS প্লাগইন যা CSS প্রপার্টিগুলিতে ভেন্ডর প্রিফিক্স যোগ করে, যাতে বিভিন্ন ব্রাউজারে CSS সঠিকভাবে কাজ করে। - cssnano:
CSSNano হল একটি PostCSS প্লাগইন যা CSS মিনিফাই করে, যা ফাইল সাইজ কমায় এবং পারফরম্যান্স বাড়ায়। - postcss-cli:
PostCSS CLI হল একটি কমান্ড লাইন ইন্টারফেস যা আপনাকে কমান্ড লাইন থেকে PostCSS চালাতে দেয়। - cross-env:
Cross-env হল একটি টুল যা ক্রস-প্ল্যাটফর্ম এনভায়রনমেন্ট ভেরিয়েবল সেট করতে সাহায্য করে। এটি Windows, macOS, এবং Linux-এ একইভাবে কাজ করে।
📄 ধাপ ৮: টেইলউইন্ড কনফিগারেশন ফাইল তৈরি করা
এখন আমরা টেইলউইন্ড কনফিগারেশন ফাইল তৈরি করব:
npx tailwindcss initএটি একটি বেসিক tailwind.config.js ফাইল তৈরি করবে। এখন এই ফাইলটি সম্পাদনা করুন:
module.exports = {
content: [
'./patterns/**/*.html',
'./includes/**/*.php',
'./*.php'
],
theme: {
extend: {
// কাস্টম থিম এক্সটেনশন এখানে যোগ করুন
colors: {
'primary': '#3490dc',
'secondary': '#ffed4a',
'danger': '#e3342f',
},
},
},
plugins: [],
corePlugins: {
preflight: false, // ওয়ার্ডপ্রেস থিমের সাথে কনফ্লিক্ট এড়াতে
},
important: true, // ওয়ার্ডপ্রেস অ্যাডমিন স্টাইলকে ওভাররাইড করবে
}🔍 tailwind.config.js ফাইলের বিস্তারিত ব্যাখ্যা:
এই ফাইলটি টেইলউইন্ড CSS-এর কনফিগারেশন ধারণ করে:
- content:
এই অ্যারেতে আপনি সেই ফাইলগুলির পাথ দেন যেগুলিতে টেইলউইন্ড CSS ক্লাস ব্যবহার করা হয়েছে। টেইলউইন্ড এই ফাইলগুলি স্ক্যান করে এবং শুধুমাত্র ব্যবহৃত ক্লাসগুলি কম্পাইল করে, যা ফাইল সাইজ কমায়। './patterns/**/*.html':patternsফোল্ডারের সমস্ত HTML ফাইল'./includes/**/*.php':includesফোল্ডারের সমস্ত PHP ফাইল'./*.php': রুট ফোল্ডারের সমস্ত PHP ফাইল- theme.extend:
এখানে আপনি টেইলউইন্ড CSS-এর ডিফল্ট থিম এক্সটেন্ড করতে পারেন। আমরা কিছু কাস্টম কালার যোগ করেছি: 'primary': '#3490dc': প্রাইমারি কালার (নীল)'secondary': '#ffed4a': সেকেন্ডারি কালার (হলুদ)'danger': '#e3342f': ডেঞ্জার কালার (লাল)- plugins:
এখানে আপনি টেইলউইন্ড CSS প্লাগইন যোগ করতে পারেন। আমরা কোন প্লাগইন ব্যবহার করছি না, তাই এটি খালি। - corePlugins.preflight:
preflight: falseসেট করা হয়েছে যাতে টেইলউইন্ড CSS-এর প্রিফ্লাইট স্টাইল (যা ডিফল্ট HTML স্টাইল রিসেট করে) ডিসেবল হয়। এটি ওয়ার্ডপ্রেস থিমের সাথে কনফ্লিক্ট এড়াতে সাহায্য করে। - important:
important: trueসেট করা হয়েছে যাতে টেইলউইন্ড CSS-এর সমস্ত ক্লাস!importantফ্ল্যাগ সহ জেনারেট হয়। এটি ওয়ার্ডপ্রেস অ্যাডমিন স্টাইলকে ওভাররাইড করতে সাহায্য করে।
📄 ধাপ ৯: PostCSS কনফিগারেশন ফাইল তৈরি করা
এখন আমরা PostCSS কনফিগারেশন ফাইল তৈরি করব:
touch postcss.config.jsএই ফাইলে নিম্নলিখিত কোড লিখুন:
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
}
}🔍 postcss.config.js ফাইলের বিস্তারিত ব্যাখ্যা:
এই ফাইলটি PostCSS-এর কনফিগারেশন ধারণ করে:
- plugins:
এখানে আমরা PostCSS প্লাগইনগুলি কনফিগার করি: - tailwindcss: টেইলউইন্ড CSS প্লাগইন, যা টেইলউইন্ড CSS প্রসেস করে।
- autoprefixer: Autoprefixer প্লাগইন, যা CSS প্রপার্টিগুলিতে ভেন্ডর প্রিফিক্স যোগ করে।
- cssnano: CSSNano প্লাগইন, যা CSS মিনিফাই করে। এটি শুধুমাত্র প্রোডাকশন মোডে (
NODE_ENV === 'production') সক্রিয় হয়। - স্প্রেড অপারেটর (
...):...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})এই লাইনটি একটি টারনারি অপারেটর ব্যবহার করে। যদিNODE_ENVভেরিয়েবল'production'হয়, তাহলেcssnanoপ্লাগইন যোগ করা হয়, অন্যথায় কিছুই যোগ করা হয় না।
📄 ধাপ ১০: টেইলউইন্ড CSS বিল্ড করা
এখন আমরা টেইলউইন্ড CSS বিল্ড করব। টার্মিনালে নিম্নলিখিত কমান্ড চালান:
npm run buildএটি src/tailwind.css ফাইল থেকে dist/tailwind.min.css ফাইল তৈরি করবে। এই ফাইলটি আমাদের প্লাগইনে ব্যবহার করা হবে।
🔍 বিল্ড প্রসেসের বিস্তারিত ব্যাখ্যা:
- npm run build:
এই কমান্ডটিpackage.jsonফাইলে ডিফাইন করাbuildস্ক্রিপ্ট চালায়। - build স্ক্রিপ্ট:
cross-env NODE_ENV=production postcss src/tailwind.css -o dist/tailwind.min.css- 1. cross-env NODE_ENV=production: এটি
NODE_ENVভেরিয়েবলproductionসেট করে, যা ক্রস-প্ল্যাটফর্ম সাপোর্ট সহ। - postcss src/tailwind.css -o dist/tailwind.min.css: এটি
src/tailwind.cssফাইল প্রসেস করে এবং আউটপুটdist/tailwind.min.cssফাইলে সেভ করে। - প্রসেসিং স্টেপস:
- টেইলউইন্ড CSS প্রসেস করা হয়
- Autoprefixer ভেন্ডর প্রিফিক্স যোগ করে
- CSSNano CSS মিনিফাই করে (প্রোডাকশন মোডে)
📄 ধাপ ১১: ডেভেলপমেন্ট মোডে কাজ করা
যখন আপনি প্লাগইনের উপর কাজ করছেন, তখন আপনি ডেভেলপমেন্ট মোডে টেইলউইন্ড CSS চালাতে পারেন:
npm run devএটি src/tailwind.css ফাইলে পরিবর্তন হলে স্বয়ংক্রিয়ভাবে dist/tailwind.min.css আপডেট করবে।
🔍 ডেভেলপমেন্ট মোডের বিস্তারিত ব্যাখ্যা:
- npm run dev:
এই কমান্ডটিpackage.jsonফাইলে ডিফাইন করাdevস্ক্রিপ্ট চালায়। - dev স্ক্রিপ্ট:
postcss src/tailwind.css -o dist/tailwind.min.css --watch- 1. postcss src/tailwind.css -o dist/tailwind.min.css: এটি
src/tailwind.cssফাইল প্রসেস করে এবং আউটপুটdist/tailwind.min.cssফাইলে সেভ করে। - –watch: এই ফ্ল্যাগটি PostCSS-কে ফাইল পরিবর্তন মনিটর করতে বলে এবং পরিবর্তন হলে স্বয়ংক্রিয়ভাবে আবার প্রসেস করে।
- ডেভেলপমেন্ট মোডের সুবিধা:
- ফাইল পরিবর্তন হলে স্বয়ংক্রিয়ভাবে আপডেট হয়
- CSSNano মিনিফিকেশন বন্ধ থাকে, যা ডিবাগিং সহজ করে
- প্রতিবার ম্যানুয়ালি কমান্ড চালানোর প্রয়োজন হয় না
📄 ধাপ ১২: প্লাগইন অ্যাক্টিভেট করা
এখন আপনার ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলে যান এবং “প্লাগইন” মেনুতে ক্লিক করুন। আপনি “My Pattern Plugin” দেখতে পাবেন। এটি অ্যাক্টিভেট করুন।
🔍 প্লাগইন অ্যাক্টিভেশনের বিস্তারিত ব্যাখ্যা:
- ওয়ার্ডপ্রেস অ্যাডমিন প্যানেলে লগইন করুন:
আপনার ওয়ার্ডপ্রেস সাইটের অ্যাডমিন URL-এ যান (সাধারণতyour-site.com/wp-admin) এবং লগইন করুন। - প্লাগইন মেনুতে যান:
লেফট সাইডবারে “প্লাগইন” মেনুতে ক্লিক করুন। - প্লাগইন খুঁজুন:
ইনস্টল করা প্লাগইনগুলির তালিকায় “My Pattern Plugin” খুঁজুন। - প্লাগইন অ্যাক্টিভেট করুন:
“অ্যাক্টিভেট” লিংকে ক্লিক করুন। - অ্যাক্টিভেশন প্রসেস:
- ওয়ার্ডপ্রেস
register_activation_hookচালায় - প্লাগইন ফাইলগুলি লোড হয়
functions.phpফাইলে থাকা ফাংশনগুলি রেজিস্টার হয়- ব্লক প্যাটার্ন ক্যাটাগরি এবং প্যাটার্ন রেজিস্টার হয়
📄 ধাপ ১৩: ব্লক প্যাটার্ন ব্যবহার করা
এখন আপনি একটি নতুন পেজ বা পোস্ট তৈরি করুন এবং ব্লক এডিটরে “+” আইকনে ক্লিক করুন। “প্যাটার্ন” ট্যাবে ক্লিক করুন এবং “আমার প্যাটার্ন” ক্যাটাগরিতে “আমাদের সম্পর্কে” প্যাটার্ন খুঁজুন। এটিতে ক্লিক করে আপনার পেজে যোগ করুন।
🔍 ব্লক প্যাটার্ন ব্যবহারের বিস্তারিত ব্যাখ্যা:
- নতুন পেজ বা পোস্ট তৈরি করুন:
- অ্যাডমিন ড্যাশবোর্ডে যান
- “পেজ” বা “পোস্ট” মেনুতে ক্লিক করুন
- “নতুন যোগ করুন” বাটনে ক্লিক করুন
- ব্লক এডিটরে “+” আইকনে ক্লিক করুন:
- এডিটরের উপরে বা কন্টেন্ট এরিয়ায় “+” আইকন খুঁজুন
- এতে ক্লিক করুন
- “প্যাটার্ন” ট্যাবে যান:
- ব্লক ইনসার্টারে বিভিন্ন ট্যাব দেখতে পাবেন
- “প্যাটার্ন” ট্যাবে ক্লিক করুন
- “আমার প্যাটার্ন” ক্যাটাগরি খুঁজুন:
- প্যাটার্ন ক্যাটাগরিগুলির তালিকায় “আমার প্যাটার্ন” খুঁজুন
- এতে ক্লিক করুন
- “আমাদের সম্পর্কে” প্যাটার্ন যোগ করুন:
- “আমাদের সম্পর্কে” প্যাটার্ন খুঁজুন
- এতে ক্লিক করুন
- প্যাটার্নটি আপনার পেজে যোগ হবে
- প্যাটার্ন কাস্টমাইজ করুন:
- প্যাটার্নটি যোগ করার পর, আপনি এটি কাস্টমাইজ করতে পারেন
- টেক্সট পরিবর্তন করুন
- ইমেজ পরিবর্তন করুন
- স্টাইল পরিবর্তন করুন
- পেজ সেভ করুন:
- পরিবর্তনগুলি সেভ করতে “আপডেট” বা “প্রকাশ করুন” বাটনে ক্লিক করুন
🔧 সমস্যা সমাধান
1. টেইলউইন্ড CSS লোড হচ্ছে না
যদি আপনি দেখেন যে টেইলউইন্ড CSS স্টাইল প্রয়োগ হচ্ছে না, তাহলে নিম্নলিখিত পদক্ষেপগুলি চেক করুন:
dist/tailwind.min.css ফাইল আছে কিনা চেক করুন:
ls -la dist/যদি ফাইল না থাকে, তাহলে npm run build কমান্ড চালান।
ব্রাউজারের ডেভেলপার টুলস ব্যবহার করে দেখুন CSS লোড হচ্ছে কিনা:
- ব্রাউজারে F12 চাপুন
- “নেটওয়ার্ক” ট্যাবে যান
- পেজ রিলোড করুন
tailwind.min.cssফাইল খুঁজুন- যদি ফাইল না পাওয়া যায় বা এরর দেখায়, তাহলে
functions.phpফাইলেmypatternplugin_enqueue_stylesফাংশন চেক করুন।
ফাইল পারমিশন চেক করুন:
chmod 644 dist/tailwind.min.css2. প্যাটার্ন দেখাচ্ছে না
যদি আপনি ব্লক এডিটরে “আমার প্যাটার্ন” ক্যাটাগরি বা “আমাদের সম্পর্কে” প্যাটার্ন না দেখতে পান, তাহলে নিম্নলিখিত পদক্ষেপগুলি চেক করুন:
- প্লাগইন অ্যাক্টিভ আছে কিনা চেক করুন:
প্লাগইন পেজে যান এবং নিশ্চিত করুন যে “My Pattern Plugin” অ্যাক্টিভ আছে। functions.phpফাইলে ফাংশনগুলি চেক করুন:mypatternplugin_register_pattern_categoryএবংmypatternplugin_register_aboutus_patternফাংশনগুলি সঠিকভাবে ডিফাইন করা আছে কিনা চেক করুন।aboutus.htmlফাইল আছে কিনা চেক করুন:
ls -la patterns/- যদি ফাইল না থাকে, তাহলে
patterns/aboutus.htmlফাইল তৈরি করুন। - ওয়ার্ডপ্রেস ডিবাগ লগ চেক করুন:
wp-config.phpফাইলে ডিবাগিং সক্রিয় করুন এবং এরর লগ চেক করুন।
3. টেইলউইন্ড CSS বিল্ড এরর
যদি আপনি টেইলউইন্ড CSS বিল্ড করার সময় এরর দেখেন, তাহলে নিম্নলিখিত সমাধানগুলি চেষ্টা করুন:
- টেইলউইন্ড CSS 3.x সংস্করণে ডাউনগ্রেড করুন:
npm uninstall tailwindcss
npm install --save-dev tailwindcss@3.4.1PostCSS কনফিগারেশন আপডেট করুন:
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
}
}node_modules ফোল্ডার পরিষ্কার করুন:
rm -rf node_modules
npm installcross-env নিশ্চিত করুন:
npm install --save-dev cross-env📝 সম্পূর্ণ প্রোজেক্ট স্ট্রাকচার
আপনার সম্পূর্ণ প্রোজেক্ট স্ট্রাকচার এরকম হওয়া উচিত:
mypatternplugin/
├── mypatternplugin.php
├── includes/
│ └── functions.php
├── patterns/
│ └── aboutus.html
├── src/
│ └── tailwind.css
├── dist/
│ └── tailwind.min.css
├── package.json
├── package-lock.json
├── tailwind.config.js
└── postcss.config.js🎯 উপসংহার
অভিনন্দন! আপনি সফলভাবে একটি ওয়ার্ডপ্রেস ব্লক প্যাটার্ন প্লাগইন তৈরি করেছেন টেইলউইন্ড CSS সহ। এই প্লাগইনটি “আমাদের সম্পর্কে” সেকশনের জন্য একটি সুন্দর ব্লক প্যাটার্ন প্রদান করে, যা আপনি আপনার ওয়ার্ডপ্রেস সাইটে সহজেই ব্যবহার করতে পারেন।
এই টিউটোরিয়ালে আমরা নিম্নলিখিত বিষয়গুলি শিখেছি:
- ওয়ার্ডপ্রেস প্লাগইন স্ট্রাকচার তৈরি করা
- ব্লক প্যাটার্ন ক্যাটাগরি এবং প্যাটার্ন রেজিস্টার করা
- টেইলউইন্ড CSS সেটআপ করা
- npm স্ক্রিপ্ট ব্যবহার করে টেইলউইন্ড CSS বিল্ড করা
- ওয়ার্ডপ্রেসে CSS লোড করা
- ব্লক এডিটরে প্যাটার্ন ব্যবহার করা
এখন আপনি আরও প্যাটার্ন যোগ করতে পারেন এবং আপনার প্লাগইনকে আরও উন্নত করতে পারেন। শুভকামনা!