পাতা সাজানো হচ্ছে•••
বিজ্ঞাপনের স্থানহেডারের নিচে
পড়ার সময়মন্তব্যে যান

Wednesday, October 21, 2026

শূন্য থেকে Minimal Classic WordPress Theme বানানোর সহজ গাইড

শূন্য থেকে Minimal Classic WordPress Theme বানানোর সহজ গাইড

নিজের হাতে একটি classic WordPress theme বানানো শেখার সবচেয়ে ভালো উপায় হলো ছোট রাখা। এখানে আমরা block theme নয়, template-ভিত্তিক একটি ন্যূনতম theme বানাব। লক্ষ্য সুন্দর ডিজাইন নয়; বরং WordPress কীভাবে header, loop, asset এবং footer জোড়া দেয় তা বোঝা। কাজের আগে staging সাইটে পরীক্ষা করুন এবং বর্তমান theme-এর backup রাখুন।

ফোল্ডার তৈরি

wp-content/themes/shobuj-minimal/ নামে ফোল্ডার বানান। Classic theme চিনতে WordPress-এর জন্য style.css দরকার; শিরোনামের comment-এ অন্তত Theme Name থাকতে হবে। পাশাপাশি functions.php, index.php, header.php এবং footer.php রাখব।

style.css: পরিচয় এবং নকশা

ফাইলের প্রথম comment-এ theme metadata দিন। নিচের CSS ইচ্ছাকৃতভাবে সাধারণ; পরে নিজের রং ও layout যোগ করতে পারবেন।

/**
 * Theme Name: Shobuj Minimal
 * Description: A tiny classic theme for learning.
 * Version: 1.0
 * Author: Your Name
 * Text Domain: shobuj-minimal
 */

body { margin: 0; font: 16px/1.6 system-ui, sans-serif; color: #222; }
.site-header, .site-footer { padding: 1rem; background: #173b2a; color: #fff; }
.site-main { max-width: 760px; margin: 2rem auto; padding: 0 1rem; }
a { color: #075e45; }

functions.php: asset ও feature

CSS সরাসরি template-এ বসানোর বদলে enqueue করা WordPress-এর স্বাভাবিক পদ্ধতি। after_setup_theme-এ title tag, featured image এবং menu support যোগ করছি।

<?php
/** Load the theme stylesheet. */
function shobuj_minimal_assets() {
    wp_enqueue_style(
        'shobuj-minimal',
        get_stylesheet_uri(),
        array(),
        wp_get_theme()->get('Version')
    );
}
add_action('wp_enqueue_scripts', 'shobuj_minimal_assets');

function shobuj_minimal_setup() {
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
    register_nav_menus(array('primary' => __('Primary Menu', 'shobuj-minimal')));
}
add_action('after_setup_theme', 'shobuj_minimal_setup');

header.php: hook ভুলবেন না

language_attributes() ও charset accessibility এবং আন্তর্জাতিকীকরণে সহায়ক। wp_head() closing head-এর আগে, আর opening body-র পরেই wp_body_open() রাখুন। Plugin-এর scripts, styles, analytics বা accessibility tooling এই hook ব্যবহার করতে পারে।

<!doctype html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<?php wp_body_open(); ?>
<header class="site-header"><a href="<?php echo esc_url(home_url('/')); ?>"><?php bloginfo('name'); ?></a></header>

index.php: নিরাপদ Loop

Loop-এ have_posts() দিয়ে ফল আছে কি না দেখা হয়, তারপর the_post() global post প্রস্তুত করে। শিরোনামের URL-এ esc_url(), তারিখে esc_html() ব্যবহার করেছি। Content দেখানোর জন্য the_excerpt() ব্যবহার করলে WordPress-এর তৈরি excerpt যথাযথ থাকে।

<?php get_header(); ?>

<main id="primary" class="site-main">
    <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <h2><a href="<?php echo esc_url(get_permalink()); ?>"><?php the_title(); ?></a></h2>
                <p><?php echo esc_html(get_the_date()); ?></p>
                <?php the_excerpt(); ?>
            </article>
        <?php endwhile; ?>
        <?php the_posts_pagination(); ?>
    <?php else : ?>
        <p><?php esc_html_e('কোনও লেখা পাওয়া যায়নি।', 'shobuj-minimal'); ?></p>
    <?php endif; ?>
</main>

<?php get_footer(); ?>

footer.php এবং পরীক্ষা

footer-এর closing body-এর ঠিক আগে wp_footer() থাকা আবশ্যক।

<footer class="site-footer"><p><?php echo esc_html(get_bloginfo('name')); ?></p></footer>
<?php wp_footer(); ?>
</body>
</html>

এখন Appearance থেকে theme activate করুন। Home page, কোনও post, search, empty result এবং mobile width দেখুন। Menu না দেখালেও প্রথম ধাপে সমস্যা নয়; পরের ধাপে wp_nav_menu() বসাতে পারবেন। PHP syntax error হলে staging-এর error log দেখুন, live site-এ অন্ধভাবে paste করবেন না।

দৈনন্দিন workflow

প্রথমে requirements লিখে নিন: site title কোথায়, navigation কতটি, post excerpt কতটা এবং typography কী হবে। তারপর HTML structure স্থির করে CSS দিন। Template-এ business logic না রেখে ছোট helper functions রাখলে theme maintain করা সহজ হয়। WordPress-এর template hierarchy পরে শিখলে home, single এবং archive আলাদা ফাইল করতে পারবেন; শুরুতে index.php fallback হিসেবে যথেষ্ট।

Loop-এর ভেতরে বড় raw HTML বা user-provided attribute সরাসরি বসাবেন না। URL, class, text এবং HTML-এর জন্য প্রসঙ্গভেদে আলাদা escaping দরকার। এই অভ্যাস ভবিষ্যতের theme-এ নিরাপত্তা সমস্যা কমায়। Accessibility-এর জন্য heading ক্রম ঠিক রাখুন, link text অর্থপূর্ণ করুন এবং keyboard-এ menu চালানো যায় কি না দেখুন।

শেষে একটি ছোট checklist রাখুন: theme activate, front page, search, pagination, 404, logged-out visitor এবং mobile viewport। PHP warning দেখা গেলে debug log-এ কারণ খুঁজুন, কিন্তু debug display live-এ চালু রাখবেন না। এই minimal theme ইচ্ছাকৃতভাবে comments, sidebar বা customizer যোগ করেনি—সেগুলি আলাদা feature হিসেবে একবারে একটিই যোগ করুন।

ছোট কিন্তু জরুরি যাচাই

কোড বসানোর পরে শুধু editor-এ সবুজ দেখালেই শেষ নয়। আলাদা browser-এ logged-out অবস্থায় page খুলুন, keyboard দিয়ে link ও control চালান, এবং mobile width-এ horizontal scroll হচ্ছে কি না দেখুন। PHP ও WordPress version-এর compatibility নোট করুন। staging-এ error log দেখে warning থাকলে সমাধান করুন; live সাইটে অযথা debug output দেখাবেন না। Backup ফেরত আনার পদ্ধতিও আগে পরীক্ষা করে রাখুন। কোনও third-party plugin একই hook বা class ব্যবহার করছে কি না দেখলে prefix বদলান। ছোট পরিবর্তন একবারে deploy করলে সমস্যা হলে কোন অংশ rollback করতে হবে তা স্পষ্ট থাকে। এই নিয়মগুলি theme, shortcode এবং CPT—তিন ক্ষেত্রেই প্রযোজ্য।

নোট লিখে রাখুন কোন file কোথায় রাখা হয়েছে এবং কোন shortcode বা URL পরীক্ষা করা হয়েছে। এতে ভবিষ্যতের update-এ ভুল কমে এবং অন্য developer দ্রুত দায়িত্ব নিতে পারেন। এই অভ্যাসটি রাখুন।

আরও পড়ুন

সতর্কতা: লাইভ সাইটে বদলানোর আগে staging কপি, পূর্ণ backup এবং rollback পরিকল্পনা রাখুন। কোডটি নিজের WordPress/PHP সংস্করণে পরীক্ষা করুন।

শেয়ার করুন WhatsApp Facebook Telegram X

No comments:

Post a Comment

বিজ্ঞাপনের স্থানপোস্ট ১
বিজ্ঞাপনের স্থানপোস্ট ২
বিজ্ঞাপনের স্থানপোস্ট ৩
About Me
পরিচয়
নাম

নাজমুল ইসলাম

ভূমিকা

Tech Specialist

আরও পরিচিতি
শিক্ষা / পড়াশোনার বিষয়
HSC
কাজ / প্রযুক্তির ক্ষেত্র / দক্ষতা
শহর / জেলা
শখ / আগ্রহ
ব্লগের বিষয় / পাঠকদের জন্য সংক্ষিপ্ত পরিচিতি
ব্যক্তিগত লেখা, ছোট গল্প ও প্রযুক্তি ভাবনা নিয়ে লিখি।
পাবলিক ওয়েবসাইট / সোশ্যাল লিংক
শেষের পরিচিতি
নাজমুল ইসলাম · Tech Specialist

লেখার আর্কাইভ

মাস অনুযায়ী পুরোনো লেখাগুলো খুঁজে নিন।