Comment

থিম বেসিক

থিম ফাংশন

Estimated reading: 3 minutes 11 views Contributors

সারাংশ: functions.php ফাইল হল যেখানে আপনি আপনার WordPress থিমে অনন্য ফিচার যুক্ত করেন। আপনার থিমকে আরও মডুলার, এক্সটেনসিবল এবং কার্যকরী করতে এটি WordPress-এর মূল ফাংশনগুলির সাথে যুক্ত করতে ব্যবহার করা যেতে পারে।

functions.php ফাইলটি কী?

functions.php (থিম ফাংশন) ফাইলটি একটি ওয়ার্ডপ্রেস প্লাগিন এর মতো কাজ করে, যা একটি ওয়ার্ডপ্রেস সাইটে নতুন ফিচার এবং ফাংশনালিটি যুক্ত করে। ওয়ার্ডপ্রেস ফাংশনগুলোকে কল করতে এবং নিজের তৈরি ফাংশনগুলোকে ডিফাইন করতে এই ফাইল ব্যবহার করা যায়।

ওয়ার্ডপ্রেস প্লাগইন বা functions.php ব্যবহার করার সুবিধা এবং অসুবিধা রয়েছে।

ওয়ার্ডপ্রেস প্লাগইন

  • নির্দিষ্ট, অনন্য হেডার টেক্সট প্রয়োজন;
  • wp-content/plugins-এ সংরক্ষণ করা হয়, সাধারণত একটি সাব-ডিরেক্টরিতে;
  • সক্রিয় হলে শুধুমাত্র পেজ লোড করার সময় কার্যকর হয়;
  • সমস্ত থিমের জন্য প্রযোজ্য; এবং
  • একটি একক উদ্দেশ্য থাকা উচিত – উদাহরণস্বরূপ, সার্চ ইঞ্জিন অপ্টিমাইজেশান ফিচার অফার করা বা ব্যাকআপগুলির সাথে সাহায্য করা।

এদিকে, একটি functions.php ফাইল

  • কোন অনন্য হেডার টেক্সট প্রয়োজন নেই;
  • থিমের সাব-ডিরেক্টরিতে wp-content/themes-এ সংরক্ষণ করা হয়;
  • শুধুমাত্র সক্রিয় থিমের ডিরেক্টরিতে থাকলে কার্যকর হয়;
  • শুধুমাত্র সেই থিমের জন্য প্রযোজ্য (যদি থিম পরিবর্তন করা হয়, তাহলে ফিচারগুলি আর ব্যবহার করা যাবে না); এবং
  • বিভিন্ন উদ্দেশ্যে ব্যবহৃত কোডের অসংখ্য ব্লক থাকতে পারে।

প্রতিটি থিমের নিজস্ব ফাংশন ফাইল রয়েছে, তবে শুধুমাত্র সক্রিয় থিমের functions.php ফাইলের কোডটিই কার্যকর হয়। যদি আপনার থিমের ইতিমধ্যেই একটি ফাংশন ফাইল থাকে, তাহলে আপনি তাতে কোড যুক্ত করতে পারেন। যদি না থাকে, তাহলে আপনি আপনার থিমের ডিরেক্টরিতে functions.php নামে একটি প্লেইন-টেক্সট ফাইল তৈরি করে তাতে কোড যুক্ত করতে পারেন, যা নিচে বর্ণনা করা হয়েছে।

একটি child theme-এর নিজস্ব functions.php ফাইল থাকতে পারে। child theme-এর ফাংশন ফাইলে ফাংশন যুক্ত করা একটি প্যারেন্ট থিম পরিবর্তন করার একটি ঝুঁকিমুক্ত উপায়। এর ফলে, যখন প্যারেন্ট থিম আপডেট করা হয়, তখন আপনাকে নতুন যুক্ত করা ফাংশনটি হারিয়ে যাওয়ার বিষয়ে চিন্তা করতে হবে না।

functions.php ফাইল ব্যবহার করে নিম্নলিখিত কাজগুলি করতে পারেন

১. ওয়ার্ডপ্রেস হুক ব্যবহার করতে পারবেন। উদাহরণস্বরূপ, excerpt_length ফিল্টার ব্যবহার করে আপনি আপনার পোস্টের সারসংক্ষেপের দৈর্ঘ্য পরিবর্তন করতে পারেন (ডিফল্ট 55 শব্দের পরিবর্তে অন্য সংখ্যায়)।

২. add_theme_support() ব্যবহার করে বিভিন্ন ওয়ার্ডপ্রেস ফিচার সক্রিয় করতে পারবেন। উদাহরণস্বরূপ, পোস্ট থাম্বনেইল, পোস্ট ফরম্যাট এবং নেভিগেশন মেনু চালু করতে পারবেন।

৩. একাধিক থিম টেমপ্লেট ফাইলে পুনরায় ব্যবহারযোগ্য ফাংশনগুলি নির্ধারণ করতে পারবেন।

উদাহরণ

নিচে বিভিন্ন ফিচারকে সাপোর্ট করার জন্য আপনি আপনার functions.php ফাইলে ব্যবহার করতে পারেন এমন কয়েকটি উদাহরণ রয়েছে। আপনি যদি আপনার থিমটি WordPress.org থিম ডিরেক্টরিতে জমা দিতে চান তবে এই উদাহরণগুলির প্রতিটি আপনার থিমে অনুমোদিত।

থিম সেটআপ

একটি “সেটআপ” ফাংশন এর মধ্যে বেশ কয়েকটি থিম ফিচার অন্তর্ভুক্ত করা উচিত যা প্রাথমিকভাবে যখন আপনার থিম সক্রিয় করা হয় তখন চালু হয়। নিচে দেখানো হয়েছে, এই ফিচারগুলির প্রতিটি WordPress-এর প্রস্তাবিত ফিচারগুলি সক্রিয় করতে আপনার functions.php ফাইলে যুক্ত করা যেতে পারে।

এই প্রাথমিক ফাংশনটি তৈরি করতে, myfirsttheme_setup() নামে একটি নতুন ফাংশন শুরু করুন, যেমন:

if ( ! function_exists( 'myfirsttheme_setup' ) ) :
/**
 * Sets up theme defaults and registers support for various WordPress  
 * features.
 *
 * It is important to set up these functions before the init hook so
 * that none of these features are lost.
 *
 *  @since MyFirstTheme 1.0
 */
function myfirsttheme_setup() { ... }

দ্রষ্টব্য: উপরের উদাহরণে, myfirsttheme_setup ফাংশনটি শুরু হয়েছে কিন্তু বন্ধ হয়নি। আপনার ফাংশন বন্ধ করতে ভুলবেন না.

স্বয়ংক্রিয় ফিড লিঙ্কগুলি

স্বয়ংক্রিয় ফিড লিঙ্কগুলি ডিফল্টরূপে পোস্ট এবং কমেন্টের RSS ফিডগুলি কার্যকর করে। এই ফিডগুলি স্বয়ংক্রিয়ভাবে <head> ট্যাগের মধ্যে ডিসপ্লে হবে। ক্লাসিক থিমগুলিতে add_theme_support() ব্যবহার করে এগুলিকে কল করা যেতে পারে। এই ফিচারটি ব্লক থিমগুলির জন্য স্বয়ংক্রিয়ভাবে কার্যকর করা হয় এবং থিম সেটআপের সময় এটি অন্তর্ভুক্ত করার প্রয়োজন হয় না।

add_theme_support( 'automatic-feed-links' );

নেভিগেশন মেনু

ক্লাসিক থিমগুলিতে, কাস্টম নেভিগেশন মেনুগুলি ইউজারদের মেনু অ্যাডমিন প্যানেলে মেনুগুলি এডিটিং এবং কাস্টমাইজ করার অনুমতি দেয়, ইউজারদের তাদের থিমের বিভিন্ন মেনু এডিটিং করার জন্য একটি ড্র্যাগ-এন্ড-ড্রপ ইন্টারফেস প্রদান করে।

আপনি functions.php-এ একাধিক মেনু সেট আপ করতে পারেন। register_nav_menus() ব্যবহার করে এগুলি যুক্ত করা যেতে পারে এবং wp_nav_menu() ব্যবহার করে একটি থিমে সন্নিবেশ করা যেতে পারে, যা এই হ্যান্ডবুকের পরে আলোচনা করা হয়েছে। আপনার থিম যদি একাধিক মেনুর অনুমতি দেয়, তাহলে আপনার একটি অ্যারে ব্যবহার করা উচিত। যদিও কিছু থিমে কাস্টম নেভিগেশন মেনু থাকবে না, সহজ কাস্টমাইজেশনের জন্য এই ফিচারটিকে অনুমতি দেওয়ার পরামর্শ দেওয়া হচ্ছে।

register_nav_menus( array(
    'primary'   => __( 'Primary Menu', 'myfirsttheme' ),
    'secondary' => __( 'Secondary Menu', 'myfirsttheme' )
) );

আপনি যে মেনুগুলি সংজ্ঞায়িত করেন সেগুলি পরে wp_nav_menu() ব্যবহার করে এবং নির্ধারিত নাম (যেমন, প্রাইমারি) থিম_লোকেশন প্যারামিটার হিসাবে ব্যবহার করে কল করা যেতে পারে।

ব্লক থিমগুলিতে, আপনি পরিবর্তে নেভিগেশন ব্লক ব্যবহার করেন।

থিম টেক্সট ডোমেন লোড করুন

থিমগুলিকে একাধিক ভাষায় অনুবাদ করা যেতে পারে আপনার থিমের স্ট্রিংগুলিকে অনুবাদের জন্য অ্যাভেইলেবল করে। এটি করার জন্য, আপনাকে load_theme_textdomain() ব্যবহার করতে হবে।

load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

পোস্ট থাম্বনেইল এবং ফিচারড ইমেজ

পোস্ট থাম্বনেইল এবং ফিচারড ইমেজ আপনার ইউজারদের তাদের পোস্টটিকে উপস্থাপন করার জন্য একটি ছবি বেছে নিতে দেয়। আপনার থিম এগুলি কীভাবে দেখাবে তা তার ডিজাইনের উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি একটি আর্কাইভ ভিউতে প্রতিটি পোস্টের সাথে একটি পোস্ট থাম্বনেইল দেখাতে বেছে নিতে পারেন। অথবা, আপনি আপনার হোমপেজে একটি বড় ফিচারড ইমেজ ব্যবহার করতে চাইতে পারেন। এই ফিচারটি ব্লক থিমগুলির জন্য স্বয়ংক্রিয়ভাবে কার্যকর করা হয় এবং থিম সেটআপের সময় অন্তর্ভুক্ত করা প্রয়োজন হয় না।

add_theme_support( 'post-thumbnails' );

পোস্ট ফরম্যাটসমূহ

পোস্ট ফরম্যাটসমূহ ইউজারদের বিভিন্ন উপায়ে তাদের পোস্ট ফরম্যাট করার সুযোগ প্রদান করে। ব্লগারদের পোস্টের বিষয়বস্তুর ভিত্তিতে বিভিন্ন ফরম্যাট এবং টেমপ্লেট বেছে নেওয়ার সুযোগ দেওয়ার ক্ষেত্রে এটি খুবই কার্যকর। পোস্ট ফরম্যাটসমূহের জন্য add_theme_support() ফাংশনের ব্যবহারও করা হয়। এটি সুপারিশকৃত।

add_theme_support( 'post-formats',  array( 'aside', 'gallery', 'quote', 'image', 'video' ) );

ব্লক থিমে থিম সাপোর্ট

ব্লক থিমগুলিতে, নিম্নলিখিত থিম সাপোর্টগুলি স্বয়ংক্রিয়ভাবে কার্যকর হয়:

add_theme_support( 'post-thumbnails' );
add_theme_support( 'responsive-embeds' );
add_theme_support( 'editor-styles' );
add_theme_support( 'html5', array( 'style','script' ) );
add_theme_support( 'automatic-feed-links' ); 

প্রাইমারি সেটআপের উদাহরণ

উপরের সমস্ত ফিচার অন্তর্ভুক্ত করলে আপনি নিচের মত একটি functions.php ফাইল পাবেন। ভবিষ্যতের স্পষ্টতার জন্য কোড কমেন্ট যুক্ত করা হয়েছে।

নিচের উদাহরণে দেখানো হয়েছে, আপনাকে অবশ্যই add_action() স্টেটমেন্ট যুক্ত করতে হবে যাতে myfirsttheme_setup ফাংশনটি লোড হয়।

if ( ! function_exists( 'myfirsttheme_setup' ) ) :
	/**
	 * Sets up theme defaults and registers support for various
	 * WordPress features.
	 *
	 * Note that this function is hooked into the after_setup_theme
	 * hook, which runs before the init hook. The init hook is too late
	 * for some features, such as indicating support post thumbnails.
	 */
	function myfirsttheme_setup() {

    /**
	 * Make theme available for translation.
	 * Translations can be placed in the /languages/ directory.
	 */
		load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

		/**
		 * Add default posts and comments RSS feed links to <head>.
		 */
		add_theme_support( 'automatic-feed-links' );

		/**
		 * Enable support for post thumbnails and featured images.
		 */
		add_theme_support( 'post-thumbnails' );

		/**
		 * Add support for two custom navigation menus.
		 */
		register_nav_menus( array(
			'primary'   => __( 'Primary Menu', 'myfirsttheme' ),
			'secondary' => __( 'Secondary Menu', 'myfirsttheme' ),
		) );

		/**
		 * Enable support for the following post formats:
		 * aside, gallery, quote, image, and video
		 */
		add_theme_support( 'post-formats', array( 'aside', 'gallery', 'quote', 'image', 'video' ) );
	}
endif; // myfirsttheme_setup
add_action( 'after_setup_theme', 'myfirsttheme_setup' );


কন্টেন্টের width

ক্লাসিক থিমগুলিতে, সাইটের কন্টেইনারের বাইরে কোনো কন্টেন্ট বা অ্যাসেট চলে না যায় তা নিশ্চিত করার জন্য functions.php ফাইলে একটি কন্টেন্ট width যুক্ত করা হয়। কন্টেন্ট width আপনার সাইটে যুক্ত করা যেকোনো কন্টেন্টের জন্য সর্বোচ্চ অনুমোদিত width নির্ধারণ করে, আপলোড করা ছবি সহ। নিচের উদাহরণে, কন্টেন্ট এরিয়ার সর্বোচ্চ width ৮০০ পিক্সেল। কোনো কন্টেন্ট এর চেয়ে বড় হবে না।

if ( ! isset ( $content_width) ) {
    $content_width = 800;
}

যেসব থিমে theme.json কনফিগারেশন ফাইল অন্তর্ভুক্ত করা আছে, সেগুলিতে functions.php ফাইলে ভ্যারিয়েবল অন্তর্ভুক্ত করার প্রয়োজন হয় না। পরিবর্তে, কন্টেন্টের width theme.json এর লেআউট সেটিংসে যুক্ত করা হয়।

অন্যান্য ফিচারসমুহ

functions.php ফাইলে আপনি আরও কিছু সাধারণ ফিচার অন্তর্ভুক্ত করতে পারেন। নিচে কয়েকটি সাধারণ ফিচার তালিকাভুক্ত করা হল। প্রতিটি ফিচার সম্পর্কে আরও জানতে ক্লিক করুন।

  • কাস্টম হেডার – ক্লাসিক থিম
  • সাইডবার (উইজেট এরিয়া) – ক্লাসিক থিম
  • কাস্টম ব্যাকগ্রাউন্ড – ক্লাসিক থিম
  • টাইটেল ট্যাগ – ক্লাসিক থিম
  • এডিটর স্টাইল যুক্ত করুন
  • HTML5 – ক্লাসিক থিম

functions.php (থিম ফাংশন) ফাইল

উপরে উল্লিখিত সমস্ত ফাংশন অন্তর্ভুক্ত করতে গেলে, আপনার functions.php ফাইলটি এরকম দেখতে হতে পারে। এটি উপরের রেফারেন্স সহ কমেন্ট করা হয়েছে।

/**
 * MyFirstTheme's functions and definitions
 *
 * @package MyFirstTheme
 * @since MyFirstTheme 1.0
 */

/**
 * First, let's set the maximum content width based on the theme's
 * design and stylesheet.
 * This will limit the width of all uploaded images and embeds.
 */
if ( ! isset( $content_width ) ) {
	$content_width = 800; /* pixels */
}


if ( ! function_exists( 'myfirsttheme_setup' ) ) :

	/**
	 * Sets up theme defaults and registers support for various
	 * WordPress features.
	 *
	 * Note that this function is hooked into the after_setup_theme
	 * hook, which runs before the init hook. The init hook is too late
	 * for some features, such as indicating support post thumbnails.
	 */
	function myfirsttheme_setup() {

		/**
		 * Make theme available for translation.
		 * Translations can be placed in the /languages/ directory.
		 */
		load_theme_textdomain( 'myfirsttheme', get_template_directory() . '/languages' );

		/**
		 * Add default posts and comments RSS feed links to <head>.
		 */
		add_theme_support( 'automatic-feed-links' );

		/**
		 * Enable support for post thumbnails and featured images.
		 */
		add_theme_support( 'post-thumbnails' );

		/**
		 * Add support for two custom navigation menus.
		 */
		register_nav_menus( array(
			'primary'   => __( 'Primary Menu', 'myfirsttheme' ),
			'secondary' => __( 'Secondary Menu', 'myfirsttheme' ),
		) );

		/**
		 * Enable support for the following post formats:
		 * aside, gallery, quote, image, and video
		 */
		add_theme_support( 'post-formats', array( 'aside', 'gallery', 'quote', 'image', 'video' ) );
	}
endif; // myfirsttheme_setup
add_action( 'after_setup_theme', 'myfirsttheme_setup' );

Leave a Comment

Share this Doc

থিম ফাংশন

Or copy link

CONTENTS

Subscribe

×
Cancel