WordPress Plugin Development
WordPress Plugin Development In Bangla Part-5: Create WordPress Admin Top-Level Menus and Submenus
WordPress Admin Top-Level Menus এবং Submenus কি?
WordPress এ Administration Menus হল WordPress Admin প্যানেলে প্রদর্শিত ইন্টারফেস। যা আপনাকে আপনার প্লাগিনের জন্য বিভিন্ন option page সমূহ যুক্ত করার সুযোগ দেয়। WordPress এ Administration Menu সমূহ দুইভাগে বিভক্ত: ১. Top-Level Menus আর অন্যটি ২. Sub-Menus আজকের পর্বে আমরা দেখবো , কিভাবে WordPress Admin প্যানেলে Top-level Menu এবং Submenu তৈরি করা যায়। চলুন শুরু করা যাক।
সাধারণত Top-level menu গুলি WordPress Administration এর বাম দিকে বরাবর রেন্ডার করা থাকে। এবং প্রতিটি Top-level menu তে এক বা একাধিক Sub-menu গুলির একটি সেট থাকতে পারে। নিচের ছবিতে লক্ষ্য করুন :
Add a Top-Level Menu
WordPress Administration এ একটা Top-level menu যুক্ত করতে হলে আপনাকে add_menu_page() function টি ব্যবহার করতে হবে। চলুন add_menu_page() function টি সম্পর্কে বিস্তারিত জানা যাক।
Syntax
<?php add_menu_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', string $icon_url = '', int $position = null ); ?>
Parameters #
- $page_title (string) (Required) এখানে মেনু এর অধীনে যেই পেজটি দেখবেন তার <title> tag এর মধ্যে যেই টেক্সট থাকবে , তা বসবে।
- $menu_title (string) (Required): এখানে আপনি যেই মেনুটি অ্যাডমিন এ দেখতে চান তার নাম হবে।
- $capability (string) (Required): এখানে আপনাকে কি ধরণের Role বা capability সম্পর্ন ইউজাররা দেখতে পাবে, তা দিতে হবে।
- $menu_slug (string) (Required) : এখানে menu এর একটা ইউনিক slug হবে। এবং অবশ্যই lowercase alphanumeric, dashes, underscores characters দিয়ে হবে। আর অবশ্যই sanitize_key() দিয়ে compatible হতে হবে।
- $function (callable) (Optional): পেজের আউটপুট কনটেন্ট দেখানোর জন্য একটা callback ফাঙ্কশন হবে। Default value: ”
- $icon_url (string) (Optional) Menu Icon এর ইউআরএল এখানে হবে। Default value: ”
- $position (int) (Optional) : মেনুটি লেফট সাইডের মেনু লিস্টের কোন পজিশনে বসবে, তার সিরিয়াল। Default value: null
নিচের উদাহরণটি দেখুনঃ
/** * Register a custom menu page. */ function wpdocs_register_my_custom_menu_page(){ add_menu_page( __( 'Custom Menu Title', 'textdomain' ), 'custom menu', 'manage_options', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6 ); } add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' ); /** * Display a custom menu page */ function my_custom_menu_page(){ esc_html_e( 'Admin Page Test', 'textdomain' ); }
https://blog.w3programmers.com/professional-wordpress-plugin-development-beginning-to-advance/
Add a Sub-Menu
WordPress Admin Panel এ যেকোনো Top Level Menu এর অধীনে Sub-menu তৈরির জন্য ওয়ার্ডপ্রেসে add_submenu_page() function টি ব্যবহৃত হয়।
Syntax #
add_submenu_page( string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '' );
Parameters #
- $parent_slug (string) (Required): এখানে আপনি যেই মেনুটির অধীনে নতুন Sub Menu তৈরি করতে যাচ্ছেন , তার অর্থাৎ Parent Menu এর slug অথবা ফাইল এর নাম দিতে হবে।
- $page_title (string) (Required) :মেনুটির জন্য যেই পেজটি লোড হবে তার <title> এর মধ্যে যেই টেক্সট দেখবেন , তা এখানে হবে।
- $menu_title (string) (Required): এখানে মেনুটির নাম হবে।
- $capability (string) (Required): যেই ধরণের Role বা capability সম্পর্ন ইউজাররা দেখতে পাবে, তা দিতে হবে।
- $menu_slug (string) (Required): যেই সাব মেনুটি তৈরি করতে যাচ্ছেন তার slug name এখানে হবে। এবং অবশ্যই lowercase alphanumeric, dashes, underscores characters দিয়ে হবে। আর অবশ্যই sanitize_key() দিয়ে compatible হতে হবে।
- $function (callable) (Optional): একটা callback ফাঙ্কশন যা দিয়ে এই মেনুর বিপরীতে আউটপুট কনটেন্ট দেখতে পারবেন। Default value: ”
- $position (int) (Optional): মেনুটি যেই জায়গায় বসবে তার পজিশন নম্বরটি এখানে হবে। Default value: null
নিচের উদাহরণটি দেখুনঃ
/** * Adds a submenu page under a custom post type parent. */ function books_register_ref_page() { add_submenu_page( 'edit.php?post_type=book', __( 'Books Shortcode Reference', 'textdomain' ), __( 'Shortcode Reference', 'textdomain' ), 'manage_options', 'books-shortcode-ref', 'books_ref_page_callback' ); } /** * Display callback for the submenu page. */ function books_ref_page_callback() { ?> <div class="wrap"> <h1><?php _e( 'Books Shortcode Reference', 'textdomain' ); ?></h1> <p><?php _e( 'Helpful stuff here', 'textdomain' ); ?></p> </div> <?php }
https://blog.w3programmers.com/professional-wordpress-plugin-development-beginning-to-advance/
তবে add_submenu_page() ফাঙ্কশনটি ছাড়াও WordPress আরো কতগুলো ফাঙ্কশন দিয়েছে , যা দিয়ে আপনি প্রত্যেকটি top level menu এর অধীনে individual sub menu তৈরি করতে পারবেন। চলুন ফাঙ্কশনগুলো এক এক করে দেখা যাক।
Tools main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Tools main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_management_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_management_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_management_page('Some page title', 'Title in the menu', 'install_plugins', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Settings main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Settings main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_options_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_options_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_options_page('Some page title', 'Title in the menu', 'manage_options', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Appearance main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Appearance main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_theme_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_theme_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_theme_page('Some page title', 'Title in the menu', 'edit_theme_options', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Plugins main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Plugins main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_plugins_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_plugins_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_plugins_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Users/Profile main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Users/Profile main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_users_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_users_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_users_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Dashboard main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Dashboard main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_dashboard_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_dashboard_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_dashboard_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Posts main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Posts main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_posts_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_posts_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_posts_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Media main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Media main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_media_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_media_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_media_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Links main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Links main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_links_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_links_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_links_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Pages main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Pages main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_pages_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_pages_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_pages_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
Comments main menu এর অধীনে সাবমেনু তৈরি
WordPress এ Comments main menu এর অধীনে সাবমেনু তৈরি করার জন্য আপনি add_submenu_page() এর পরিবর্তে add_comments_page() ফাঙ্কশনটি ব্যবহার করতে পারেন। আর এই ফাঙ্কশনটির Parametar গুলো হুবহু add_submenu_page() ফাঙ্কশন এর মতোই।
Syntax
add_comments_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '', int $position = null )
নিচের উদাহরণটি দেখুনঃ
<?php add_action ('admin_menu', function () { add_comments_page('Some page title', 'Title in the menu', 'read', 'some_unique_string', 'my_custom_page_render_function', ''); }); function my_custom_page_render_function() { echo 'This is content of the page'; }
https://blog.w3programmers.com/professional-wordpress-plugin-development-beginning-to-advance/
Registering the script (JS) Files
WordPress এর Theme অথবা প্লাগিনে যেকোনো JavaScript লোড করার জন্য wp_register_script() function টি ব্যবহৃত হয়।
Syntax
wp_register_script( string $handle, string|bool $src, string[] $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
Parameters #
- $handle (string) (Required): এখানে আপনার JavaScript ফাইলের একটা ইউনিক নাম হবে।
- $src (string|bool) (Required): আপনার JavaScript ফাইলের সম্পূর্ণ URL অথবা WordPress root directory এর সাথে সম্পর্কৃত path এখানে হবে।
- $deps (string[]) (Optional): যদি আপনার JavaScrippt এর কোনো Dependency থাকে সেটা এখানে দিতে পারেন। Default value: array()
- $ver (string|bool|null) (Optional): আপনার JavaScript এর যদি ভার্সন নম্বর থাকে সেটা এখানে দিতে পারেন। Default value: false
- $in_footer (bool) (Optional): JavaScript কোডটি যদি <head> tag এর মধ্যের পরিবর্তে </body> এর আগে দিতে চান , তাহলে এই value টি true hহবে। Default ‘false’.
নিচের উদাহরণটি দেখুনঃ
<?php function w3_register_plugin_scripts() { wp_register_script( 'w3-script', plugins_url( 'js/script.js' ) ); } add_action( 'admin_enqueue_scripts', 'w3_register_plugin_scripts' ); ?>
Enqueueing the JavaScript Files
আপনার JavaScript file টি রেজিস্টার হয়ে যাওয়ার পর , এখন এটাকে আপনার থিম অথবা প্লাগিনের জন্য রেডি করতে হবে। অর্থাৎ, আপনার JavaScript file টিকে <head> এর মধ্যে অথবা </body> এর আগে লোড করতে হবে। আর এই কাজটি করার জন্য ওয়ার্ডপ্রেসে wp_enqueue_script() function টি ব্যবহৃত হয়।
Syntax
wp_enqueue_script( string $handle, string $src = '', string[] $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
Parameters #
- $handle (string) (Required): এখানে আপনার JavaScript ফাইলের একটা ইউনিক নাম হবে।
- $src (string|bool) (Required): আপনার JavaScript ফাইলের সম্পূর্ণ URL অথবা WordPress root directory এর সাথে সম্পর্কৃত path এখানে হবে।
- $deps (string[]) (Optional): যদি আপনার JavaScrippt এর কোনো Dependency থাকে সেটা এখানে দিতে পারেন। Default value: array()
- $ver (string|bool|null) (Optional): আপনার JavaScript এর যদি ভার্সন নম্বর থাকে সেটা এখানে দিতে পারেন। Default value: false
- $in_footer (bool) (Optional): JavaScript কোডটি যদি <head> tag এর মধ্যের পরিবর্তে </body> এর আগে দিতে চান , তাহলে এই value টি true hহবে। Default ‘false’.
নিচের উদাহরণটি দেখুনঃ
<?php function load_w3_plugin_scripts() { wp_enqueue_script( 'w3-script' ); } add_action( 'admin_enqueue_scripts', 'load_w3_plugin_scripts' ); ?>
https://blog.w3programmers.com/professional-wordpress-plugin-development-beginning-to-advance/
ওয়ার্ডপ্রেসের এডমিনে একটা Top Level Menu এবং Sub Menu তৈরির প্লাগিন :
এতক্ষন আমরা ওয়ার্ডপ্রেসের এডমিনে একটা Top Level Menu এবং Sub Menu তৈরি করার জন্য যা যা দরকার , তার মোটামোটি সবই দেখিয়েছি। এখন চলুন এগুলো ব্যবহার করে ওয়ার্ডপ্রেসের এডমিনে মেনু এবং সাবমেনু তৈরির একটা প্লাগিন তৈরি করে ফেলা যাক :
<?php /* Plugin Name: W3 custom admin page Description: Adds a custom admin pages with sample styles and scripts. Plugin URI: https://github.com/w3programmers/w3-custom-admin-page Version: 1.0.0 Author: Masud Alam Author URI: https://blog.w3programmers.com Text Domain: w3-custom-admin-page */ function w3_admin_menu(){ add_menu_page( __( 'Sample Page', 'w3-textdomain' ), __( 'Sample Page', 'w3-textdomain' ), 'manage_options', 'sample-page', 'w3_admin_page_contents', 'dashicons-schedule', 3 ); } add_action( 'admin_menu', 'w3_admin_menu' ); function w3_admin_page_contents() { ?> <h1> <?php esc_html_e( 'Welcome to w3 custom admin page.', 'w3-plugin-textdomain' ); ?> </h1> <?php } function w3_admin_submenu() { add_submenu_page( 'sample-page', 'Sample Submenu Page', 'Sample Submenu Page', 'manage_options', 'sample-submenu-page', 'w3_admin_submenu_page_contents' ); } add_action( 'admin_menu', 'w3_admin_submenu' ); function w3_admin_submenu_page_contents() { echo '<div class="wrap"><div id="icon-tools" class="icon32"></div>'; echo '<h2>w3 Custom Submenu Page</h2>'; echo '</div>'; } function w3_register_plugin_scripts() { wp_register_style( 'w3-style', plugins_url( 'css/style.css' ) ); wp_register_script( 'w3-script', plugins_url( 'js/script.js' ) ); } add_action( 'admin_enqueue_scripts', 'w3_register_plugin_scripts' ); function load_w3_plugin_scripts( $hook ) { // Load only on ?page=sample-page if( $hook != 'toplevel_page_sample-page' ) { return; } // Load style & scripts. wp_enqueue_style( 'w3-style' ); wp_enqueue_script( 'w3-script' ); } add_action( 'admin_enqueue_scripts', 'load_w3_plugin_scripts' );
এখন যদি, আপনি প্লাগিনটি এক্টিভেট করেন , তাহলে নিচের মতো ফলাফল দেখতে পাবেন।
আর নতুন কাস্টম মেনুতে ক্লিক করলে , নিচের মতো ফলাফল দেখতে পাবেন।
Removing the Top-Level Menus From Admin
WordPress এর Admin Panel থেকে যেকোনো Top-Level Menu রিমুভ করার জন্য remove_menu_page() ফাঙ্কশনটি ব্যবহৃত হয়। চলুন remove_menu_page() ফাঙ্কশনের সিনটেক্স দেখা যাক।
remove_menu_page( string $menu_slug )
Parameters #
- $menu_slug (string) (Required): যেই মেনুটি রিমুভ করতে চাচ্ছেন তার slug অথবা ফাইল এর নামটি এখানে হবে।
Removing the Sub-menus From Admin
WordPress এর Admin Panel থেকে যেকোনো Submenu কে রিমুভ করার জন্য remove_submenu_page() ফাঙ্কশনটি ব্যবহৃত হয়। চলুন remove_submenu_page() ফাঙ্কশনের সিনটেক্স দেখা যাক।
remove_submenu_page( string $menu_slug, string $submenu_slug )
Parameters #
- $menu_slug (string) (Required): যেই submenu টি রিমুভ করবেন তার Parent মেনু এর slug টি এখানে হবে।
- $submenu_slug (string) (Required) : যেই submenu টি রিমুভ করবেন তার slug টি এখানে হবে।
https://blog.w3programmers.com/professional-wordpress-plugin-development-beginning-to-advance/
ওয়ার্ডপ্রেসের এডমিনে কিছু Top Level Menu এবং Sub Menu রিমুভ করার প্লাগিন :
এখন আমরা ওয়ার্ডপ্রেসের এডমিনে কিছু Top Level Menu এবং Sub Menu রিমুভ করার জন্য একটা প্লাগিন তৈরি করব। চলুন দেখা যাক :
<?php /* Plugin Name: W3 Remove admin Menu pages Description: Remove admin pages From Administraton Plugin URI: https://github.com/w3programmers/w3-remove-admin-menu-pages Version: 1.0.0 Author: Masud Alam Author URI: https://blog.w3programmers.com Text Domain: w3-remove-admin-menu-pages */ add_action( 'admin_menu', 'w3_remove_admin_menu_pages', 999 ); function w3_remove_admin_menu_pages() { remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media remove_menu_page( 'edit-comments.php' ); //Comments remove_menu_page( 'themes.php' ); //Appearance remove_menu_page( 'users.php' ); //Users remove_menu_page( 'tools.php' ); //Tools remove_menu_page( 'options-general.php' ); //Settings remove_submenu_page( 'sample-page','sample-submenu-page' ); };
এখন যদি, আপনি প্লাগিনটি এক্টিভেট করেন , তাহলে নিচের মতো ফলাফল দেখতে পাবেন।
WordPress সাইটে stylesheets এবং JavaScript লোড করার আরো কিছু পদ্ধতি
আমরা চাইলেও আমাদের ওয়ার্ডপ্রেস থিম এর যেকোনো জায়গায় wp_enqueue_style() function টি ব্যবহার করতে পারিনা। তখন আমাদেরকে নিম্নোক্ত actions hook গুলোকে ব্যবহার করতে হয়।
- wp_enqueue_scripts শুধু মাত্র আমাদের ওয়েব সাইটের front-end এ যেকোনো scripts অথবা styles লোড করার জন্য ব্যবহৃত হয়।
- admin_enqueue_scripts শুধু মাত্র আমাদের ওয়েব সাইটের Administration এর জন্য যেকোনো scripts অথবা styles লোড করার জন্য ব্যবহৃত হয়।
- login_enqueue_scripts শুধু মাত্র আমাদের ওয়েব সাইটের Login Page এর জন্য যেকোনো scripts অথবা styles লোড করার জন্য ব্যবহৃত হয়।
এবার নিচের উদাহরণটি দেখুনঃ
<?php // load css into the website's front-end function w3_theme_enqueue_style() { wp_enqueue_style( 'w3-theme-style', get_stylesheet_uri() ); } add_action( 'wp_enqueue_scripts', 'w3_theme_enqueue_style' ); // load css into the admin pages function w3_theme_enqueue_options_style() { wp_enqueue_style( 'w3-theme-options-style', get_template_directory_uri() . '/css/admin.css' ); } add_action( 'admin_enqueue_scripts', 'w3_theme_enqueue_options_style' ); // load css into the login page function w3_theme_enqueue_login_style() { wp_enqueue_style( 'w3-theme-options-style', get_template_directory_uri() . '/css/login.css' ); } add_action( 'login_enqueue_scripts', 'w3_theme_enqueue_login_style' ); ?>
আরো কিছু অতিরিক্ত ফাংশন
ওয়ার্ডপ্রেসে CSS Styelsheets ব্যবহার নিয়ে আরো কিছু খুব দরকারী functions রয়েছে: যা আমাদের কে inline styles যুক্ত করার সুযোগ দেয় , আমাদের stylesheets ফাইলগুলির enqueue অবস্থাটি check করার, meta data যুক্ত করার এবং stylesheets কে deregister করার সুযোগ দেয়।
চলুন একটু দেখি:
Adding Dynamic Inline Styles
WordPress এ registered stylesheet এ অতিরিক্ত CSS যুক্ত করার জন্য wp_add_inline_style() টি ব্যবহৃত হয়।
Syntax
wp_add_inline_style( string $handle, string $data )
Parameters #
- $handle (string) (Required) যেই CSS ফাইলটিতে অতিরিক্ত CSS যুক্ত করতে চান , সেই stylesheet এর নাম হবে।
- $data (string) (Required) যেই CSS গুলো যুক্ত করবেন , সেগুলো।
এবার নিচের উদাহরণটি দেখুনঃ
<?php function mytheme_custom_styles() { wp_enqueue_style( 'custom-style', get_template_directory_uri() . '/css/custom-style.css' ); $bold_headlines = get_theme_mod( 'headline-font-weight' ); // let's say its value is "bold" $custom_inline_style = '.headline { font-weight: ' . $bold_headlines . '; }'; wp_add_inline_style( 'custom-style', $custom_inline_style ); } add_action( 'wp_enqueue_scripts', 'mytheme_custom_styles' ); ?>
Adding Meta Data to the Stylesheet
অনেক সময় আমাদের style এ বিভিন্ন meta data যেমন: conditional comments, RTL support ইত্যাদি যুক্ত করতে হয়। WordPress CSS Style এ meta data যুক্ত করার জন্য wp_style_add_data() ফাঙ্কশনটি ব্যবহৃত হয়।
Syntax
wp_style_add_data( string $handle, string $key, mixed $value )
Parameters #
- $handle (string) (Required): যেই stylesheet এ meta data যুক্ত করবেন তার নাম।
- $key (string) (Required): যেই data point এ meta data গুলো (যেমন ‘conditional’, ‘rtl’ and ‘suffix’, ‘alt’ and ‘title’ ইত্যাদি) যুক্ত করব তার নাম।
- $value (mixed) (Required) meta data গুলো যেমন ‘conditional’, ‘rtl’ and ‘suffix’, ‘alt’ and ‘title’ ইত্যাদি এখানে থাকবে।
এবার নিচের উদাহরণটি দেখুনঃ
<?php /* * wp_style_add_data( $handle, $key, $value ); * Possible values for $key and $value: * 'conditional' string Comments for IE 6, lte IE 7 etc. * 'rtl' bool|string To declare an RTL stylesheet. * 'suffix' string Optional suffix, used in combination with RTL. * 'alt' bool For rel="alternate stylesheet". * 'title' string For preferred/alternate stylesheets. */ // wp_style_add_data() example function mytheme_extra_styles() { wp_enqueue_style( 'mytheme-ie', get_template_directory_uri() . '/css/ie.css' ); wp_style_add_data( 'mytheme-ie', 'conditional', 'lt IE 9' ); /* * alternate usage: * $GLOBALS['wp_styles']->add_data( 'mytheme-ie', 'conditional', 'lte IE 9' ); * wp_style_add_data() is cleaner, though. */ } add_action( 'wp_enqueue_scripts', 'mytheme_ie_style' ); ?>
WordPress Stylesheet এর বর্তমান Enqueue State জানা
WordPress Stylesheet এর বর্তমান Enqueue State কি? তা জানার জন্য আপনি wp_style_is() ফাঙ্কশনটি ব্যবহার করতে পারেন। চলুন দেখা যাক :
Syntax
wp_style_is( string $handle, string $list = 'enqueued' )
Parameters #
- $handle (string) (Required): যেই stylesheet এর Enqueue State জানতে চাচ্ছেন তার নাম।
- $list (string) (Optional) যেই স্টেটাস টি জানতে চাচ্ছেন তার নাম। যেমন : ‘enqueued’, ‘registered’, ‘queue’, ‘to_do’, অথবা ‘done’.Default value: ‘enqueued’
এবার নিচের উদাহরণটি দেখুনঃ
<?php /* * wp_style_is( $handle, $state ); * $handle - name of the stylesheet * $state - state of the stylesheet: 'registered', 'enqueued', 'done' or 'to_do'. default: 'enqueued' */ // wp_style_is() example function bootstrap_styles() { if( wp_style_is( 'bootstrap-main' ) { // enqueue the bootstrap theme if bootstrap is already enqueued wp_enqueue_style( 'my-custom-bootstrap-theme', 'http://url.of/the/custom-theme.css' ); } } add_action( 'wp_enqueue_scripts', 'bootstrap_styles' ); ?>