ওয়ার্ডপ্রেস থিমে একটি রেস্পন্সিভ জেকুয়েরি স্লাইডার যোগ করার পদ্ধতি
() translation by (you can also view the original English article)
আজ আমি আপনাকে দেখাবো কিভাবে ওয়ার্ডপ্রেস থিম বা সাইটে একটি রেস্পন্সিভ জেকুয়েরি স্লাইডার যোগ করতে হয়। এটি একটি উদ্ভাবনী টিউটোরিয়াল না হলেও খুব কম লোকই এই কাজটি সঠিক ভাবে সম্পন্ন করতে পারে। তাই চলুন দেখা যাক, কিভাবে সঠিক উপায়ে একটি রেসপন্সিভ স্লাইডার যোগ করা যায়। চলুন আমরা ধাপে ধাপে দেখি, কিভাবে কাস্টম পোস্ট টাইপ হিসেবে ইমেজ স্লাইডার তৈরি করতে হয় এবং ওয়ার্ডপ্রেস থিমে তা ব্যবহার উপযোগী করে তুলতে হয়।
এখানে আমরা WooThemes এর তৈরি FlexSlider 2 ব্যবহার করতে যাচ্ছি, কারন এটি সুশৃঙ্খল ভাবে কোড করা একটি রেস্পন্সিভ স্লাইডার যা GPLv2 লাইসেন্সেকৃত, ফলে যে কেউ এটি ব্যবহার করতে পারে। আপনি আরো আগ্রহী হলে গিটহাব সংগ্রহশালা থেকে কোডটি সবিস্তার দেখে নিতে পারেন।
কিছু করার আগে, চলুন আমরা এক ধাপ পিছিয়ে যাই ও চিন্তা করে দেখি যেঃ
- কি কি ফাইল স্লাইডার তৈরি করতে প্রয়োজন।
- আর কি কি ফাইল আমাদের দরকার হতে পারে
আমরা প্রথমে যে কাজটি করতে যাচ্ছি, তা হচ্ছে ফ্লেক্সিস্লাইডার ডাউনলোড করা।
ডাউনলোড হলে ফাইলটি unzip করুন।



এখানে বেশ কিছু ফাইল আছে, যা আমাদের দরকার লাগবে, প্রধানতঃ
- flexslider.css
- images/bg_direction_nav.png
- jquery.flexslider-min.js
ফ্লেক্স স্লাইডার ডাউনলোডের জন্য আমাদের শুধুমাত্র এই ফাইল গুলো দরকার হবে।
প্রথম ধাপঃ ফাইলগুলো সাজানো
এখন চলুন এই তিনটি ফাইল এখান থেকে সরিয়ে আমাদের থিমের মূল ডিরেক্টরিতে আপলোড করি। আপনার থিম অথবা ফাইল বিন্যাসের উপর ভিত্তি করে যেকোনো জায়গায় রাখতে পারেন, কিন্তু যেখানে ফাইলগুলো রেখেছেন তার একটি নোট নিয়ে রাখুন যা কোডটি নতুন লোকেশনের সাথে মিল রেখে হালনাগাদ করতে লাগবে।
এই টিউটোরিয়ালের জন্য আমরা ওয়ার্ডপ্রেসের ডিফল্ট Twenty Eleven থিম ব্যবহার করবো। থিমের inc/ ডাইরেক্টরির ভিতর slider নামে নতুন একটি ফোল্ডার তৈরি করুন। চলুন এর ভিতর আবার নতুন কিছু ফোল্ডার তৈরি করিঃ
- css
- images
- js
এবার, তাহলে flexslider.css ফাইলটি css ফোল্ডারে রাখা যাক, images ফোল্ডারে bg_direction_nav.png ফাইলটি রাখি এবং jquery.flexslider-min.js ফাইলটি, বুঝতেই পারছেন, js ফোল্ডারে রাখতে হবে।
নোটঃ সাধারনতঃ আমি এগুলো থিম ডিরেক্টরির অন্যান্য ফাইলের সাথে css/images/js ফোল্ডারে রাখি কিন্তু এই টিউটোরিয়ালটিকে সার্বজনীন রাখার জন্য, আমরা ফাইলগুলোকে এভাবে সাজিয়েছি। ওয়ার্ডপ্রেস থিম ডেভেলপমেণ্টে যদি আপনার অভিজ্ঞতা থাকে, তাহলে আপনি নিজে নিজে আপনার ফাইল সংগঠিত করতে পারেন।
এখন আমরা স্লাইডার ফোল্ডারে আরও ২ টি ফাইল তৈরি করবোঃ
- slider.php - স্লাইডার টেম্পলেট তৈরি করে এবং স্লাইডার এর ফাইল লোড করে।
- slider_post_type.php - স্লাইডার পোস্ট টাইপ তৈরি করে।
এখন, আপনার নিশ্চয়ই একটি স্লাইডার ফোল্ডার আছে, যেটা দেখতে অনেকটা এমন হবেঃ



আরও এগিয়ে যাওয়ার আগে, আপনার থিমের functions.php ফাইলটি খুলুন এবং নিম্নলিখিত দুইটি লাইন যোগ করুন, যার ফলে আমাদের এইমাত্র তৈরি করা .php ফাইল দুটি লোড হবে:
1 |
// Create Slider Post Type
|
2 |
require( get_template_directory() . '/inc/slider/slider_post_type.php' ); |
3 |
// Create Slider
|
4 |
require( get_template_directory() . '/inc/slider/slider.php' ); |
চলুন...এখন কোডিং করতে শুরু করি!
২য় ধাপঃ স্লাইডার পোস্ট টাইপ
প্রথমে আমরা যা করতে যাচ্ছি, তা হচ্ছে একটি কাস্টম পোস্ট টাইপ তৈরি করা যার মধ্যে আমাদের সমস্ত স্লাইডগুলো থাকবে। কাস্টম পোস্ট টাইপ ওয়ার্ডপ্রেস ৩.০ এ চালু হয়েছে এবং সম্ভবত পৃথিবীতে ঘটে যাওয়া সবচেয়ে সুন্দর জিনিস(এমন কি আরও আছে? সত্যিই এদের ভালবাসি)।
slider_post_type.php ফাইলটি খুলুন এবং নিন্মোক্ত কোডটি আপনার স্লাইডের কাস্টম পোস্ট টাইপ তৈরি করার জন্য যোগ করুনঃ
1 |
<?php
|
2 |
|
3 |
// Create Custom Post Type
|
4 |
|
5 |
function register_slides_posttype() { |
6 |
$labels = array( |
7 |
'name' => _x( 'Slides', 'post type general name' ), |
8 |
'singular_name' => _x( 'Slide', 'post type singular name' ), |
9 |
'add_new' => __( 'Add New Slide' ), |
10 |
'add_new_item' => __( 'Add New Slide' ), |
11 |
'edit_item' => __( 'Edit Slide' ), |
12 |
'new_item' => __( 'New Slide' ), |
13 |
'view_item' => __( 'View Slide' ), |
14 |
'search_items' => __( 'Search Slides' ), |
15 |
'not_found' => __( 'Slide' ), |
16 |
'not_found_in_trash'=> __( 'Slide' ), |
17 |
'parent_item_colon' => __( 'Slide' ), |
18 |
'menu_name' => __( 'Slides' ) |
19 |
);
|
20 |
|
21 |
$taxonomies = array(); |
22 |
|
23 |
$supports = array('title','thumbnail'); |
24 |
|
25 |
$post_type_args = array( |
26 |
'labels' => $labels, |
27 |
'singular_label' => __('Slide'), |
28 |
'public' => true, |
29 |
'show_ui' => true, |
30 |
'publicly_queryable'=> true, |
31 |
'query_var' => true, |
32 |
'capability_type' => 'post', |
33 |
'has_archive' => false, |
34 |
'hierarchical' => false, |
35 |
'rewrite' => array( 'slug' => 'slides', 'with_front' => false ), |
36 |
'supports' => $supports, |
37 |
'menu_position' => 27, // Where it is in the menu. Change to 6 and it's below posts. 11 and it's below media, etc. |
38 |
'menu_icon' => get_template_directory_uri() . '/inc/slider/images/icon.png', |
39 |
'taxonomies' => $taxonomies |
40 |
);
|
41 |
register_post_type('slides',$post_type_args); |
42 |
}
|
43 |
add_action('init', 'register_slides_posttype'); |
কাস্টম পোস্ট টাইপ যোগ করা হলো! এর নীচে আমরা একটি মেটাবক্স যুক্ত করবো, যেখানে URL এর জন্য নির্দিষ্ট জায়গা থাকবে যার মাধ্যমে স্লাইডটি যুক্ত করা হবে। এখন, আমরা নিন্মে বর্ণিত সম্পূর্ণ কোডটি কপি করতে যাচ্ছিঃ
1 |
// Meta Box for Slider URL
|
2 |
|
3 |
$slidelink_2_metabox = array( |
4 |
'id' => 'slidelink', |
5 |
'title' => 'Slide Link', |
6 |
'page' => array('slides'), |
7 |
'context' => 'normal', |
8 |
'priority' => 'default', |
9 |
'fields' => array( |
10 |
|
11 |
|
12 |
array( |
13 |
'name' => 'Slide URL', |
14 |
'desc' => '', |
15 |
'id' => 'wptuts_slideurl', |
16 |
'class' => 'wptuts_slideurl', |
17 |
'type' => 'text', |
18 |
'rich_editor' => 0, |
19 |
'max' => 0 |
20 |
),
|
21 |
)
|
22 |
);
|
23 |
|
24 |
add_action('admin_menu', 'wptuts_add_slidelink_2_meta_box'); |
25 |
function wptuts_add_slidelink_2_meta_box() { |
26 |
|
27 |
global $slidelink_2_metabox; |
28 |
|
29 |
foreach($slidelink_2_metabox['page'] as $page) { |
30 |
add_meta_box($slidelink_2_metabox['id'], $slidelink_2_metabox['title'], 'wptuts_show_slidelink_2_box', $page, 'normal', 'default', $slidelink_2_metabox); |
31 |
}
|
32 |
}
|
33 |
|
34 |
// function to show meta boxes
|
35 |
function wptuts_show_slidelink_2_box() { |
36 |
global $post; |
37 |
global $slidelink_2_metabox; |
38 |
global $wptuts_prefix; |
39 |
global $wp_version; |
40 |
|
41 |
// Use nonce for verification
|
42 |
echo '<input type="hidden" name="wptuts_slidelink_2_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; |
43 |
|
44 |
echo '<table class="form-table">'; |
45 |
|
46 |
foreach ($slidelink_2_metabox['fields'] as $field) { |
47 |
// get current post meta data
|
48 |
|
49 |
$meta = get_post_meta($post->ID, $field['id'], true); |
50 |
|
51 |
echo '<tr>', |
52 |
'<th style="width:20%"><label for="', $field['id'], '">', stripslashes($field['name']), '</label></th>', |
53 |
'<td class="wptuts_field_type_' . str_replace(' ', '_', $field['type']) . '">'; |
54 |
switch ($field['type']) { |
55 |
case 'text': |
56 |
echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" /><br/>', '', stripslashes($field['desc']); |
57 |
break; |
58 |
}
|
59 |
echo '<td>', |
60 |
'</tr>'; |
61 |
}
|
62 |
|
63 |
echo '</table>'; |
64 |
}
|
65 |
|
66 |
// Save data from meta box
|
67 |
add_action('save_post', 'wptuts_slidelink_2_save'); |
68 |
function wptuts_slidelink_2_save($post_id) { |
69 |
global $post; |
70 |
global $slidelink_2_metabox; |
71 |
|
72 |
// verify nonce
|
73 |
if (!wp_verify_nonce($_POST['wptuts_slidelink_2_meta_box_nonce'], basename(__FILE__))) { |
74 |
return $post_id; |
75 |
}
|
76 |
|
77 |
// check autosave
|
78 |
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { |
79 |
return $post_id; |
80 |
}
|
81 |
|
82 |
// check permissions
|
83 |
if ('page' == $_POST['post_type']) { |
84 |
if (!current_user_can('edit_page', $post_id)) { |
85 |
return $post_id; |
86 |
}
|
87 |
} elseif (!current_user_can('edit_post', $post_id)) { |
88 |
return $post_id; |
89 |
}
|
90 |
|
91 |
foreach ($slidelink_2_metabox['fields'] as $field) { |
92 |
|
93 |
$old = get_post_meta($post_id, $field['id'], true); |
94 |
$new = $_POST[$field['id']]; |
95 |
|
96 |
if ($new && $new != $old) { |
97 |
if($field['type'] == 'date') { |
98 |
$new = wptuts_format_date($new); |
99 |
update_post_meta($post_id, $field['id'], $new); |
100 |
} else { |
101 |
if(is_string($new)) { |
102 |
$new = $new; |
103 |
}
|
104 |
update_post_meta($post_id, $field['id'], $new); |
105 |
|
106 |
|
107 |
}
|
108 |
} elseif ('' == $new && $old) { |
109 |
delete_post_meta($post_id, $field['id'], $old); |
110 |
}
|
111 |
}
|
112 |
}
|
আহহ। ওটা শেষ হলো। আপনার ড্যাশবোর্ডে যান এবং আপনি একটি নতুন চকচকে 'স্লাইড' কাস্টম পোস্ট টাইপ দেখতে পাবেন।



৩য় ধাপঃ স্লাইডার ফাইলসমূহ লোড করুন
slider.php ফাইলটি খুলুন। এখন আমরা jQuery, FlexSlider jQuery এর স্ক্রিপ্ট এবং FlexSlider স্টাইলশীট সারিবদ্ধ করে সাজাতে যাচ্ছি। অন্যথায় আপনার ইচ্ছা হলে style.css ফাইলে flexslider.css থেকে কোড কপি করতে পারেন।
1 |
<?php
|
2 |
|
3 |
// Enqueue Flexslider Files
|
4 |
|
5 |
function wptuts_slider_scripts() { |
6 |
wp_enqueue_script( 'jquery' ); |
7 |
|
8 |
wp_enqueue_style( 'flex-style', get_template_directory_uri() . '/inc/slider/css/flexslider.css' ); |
9 |
|
10 |
wp_enqueue_script( 'flex-script', get_template_directory_uri() . '/inc/slider/js/jquery.flexslider-min.js', array( 'jquery' ), false, true ); |
11 |
}
|
12 |
add_action( 'wp_enqueue_scripts', 'wptuts_slider_scripts' ); |
এই কাজ করার সময় আপনাকে আরও কিছু করতে হবে। আমাদের ফাইল কাঠামোর কারনে, flexslider.css এর জন্য কিছু সম্পাদনা প্রয়োজন, যাতে এটা খুব সহজেই তীর ইমেজটি খুঁজে পাবে। তাই ওটা খুলুন ও নীচের শব্দগুলো অনুসন্ধান করুন এবং প্রতিস্থাপন করুন:
-
images
পরিবর্তন করুন../images
দিয়ে।
৪র্থ ধাপঃ স্লাইডার আরম্ভ
এখন, আমাদের <head>
সেকশনে কিছু জেকুয়েরি যোগ করা প্রয়োজন, যাতে খুব সহজেই স্লাইডার আরম্ভ করা যায়। চলুন, এবার slider.php এর নীচে নিম্নলিখিত কোডগুলো যোগ করা যাক!
1 |
// Initialize Slider |
2 |
|
3 |
function wptuts_slider_initialize() { ?> |
4 |
<script type="text/javascript" charset="utf-8"> |
5 |
jQuery(window).load(function() { |
6 |
jQuery('.flexslider').flexslider({ |
7 |
animation: "fade", |
8 |
direction: "horizontal", |
9 |
slideshowSpeed: 7000, |
10 |
animationSpeed: 600 |
11 |
});
|
12 |
});
|
13 |
</script>
|
14 |
<?php } |
15 |
add_action( 'wp_head', 'wptuts_slider_initialize' ); |
যে কারনে আমার FlexSlider পছন্দ তা হচ্ছে এর নমনীয়তা। এখানে বেশ কয়েকটি প্যারামিটার বা পরামিতি আছে যা আপনি মেরামত করতে পারেন, কিন্তু আমি মাত্র চারটি গুরুত্বপূর্ণ প্যারামিটার উপরে অন্তর্ভুক্ত করেছি। slide
থেকে fade
, অথবা horizontal
থেকে vertical
পরিবর্তন করে দেখতে পারেন। আপনি সব প্যারামিটারগুলো এখানে দেখতে পাবেন।
নোটঃ মনে রাখবেন উপরের কাজটি অন্য উপায়ে করার জন্য wp_localize_script
ফাংশনটি ব্যবহার করতে পারেন, (কোডেক্সে দেখুন) কিন্তু এই টিউটোরিয়ালের জন্য এটা কিছুটা কঠিন মনে হতে পারে। যদিও, পিপ্পিন উইলিয়ামসন (আরেকজন Wptuts+ লেখক) ইতিমধ্যেই এই বিষয়ের উপর একটি চমৎকার টিউটোরিয়াল লিখেছেন। আপনি যদি আগ্রহী হোন, তাহলে দেখতে পারেন।
৫ম ধাপঃ স্লাইডার তৈরি
এখন আমরা আসলে স্লাইডারের জন্য টেম্পলেট তৈরি করতে যাচ্ছি। প্রথমে আমরা WP_Query
ব্যবহার করে স্লাইডের কাস্টম পোস্ট টাইপ থেকে পোস্ট নিয়ে আসবো। তারপর, আমরা স্লাইড চেক করবো এবং তারপর স্লাইডার শুরু করবো। এরপর আমরা লুপ শুরু করবো। প্রতি 'স্লাইড' তারপর পরীক্ষা করা হবে। যদি তাতে একটি স্লাইড URL বসানো হয়, তবে এর জন্য একটি লিঙ্ক তৈরি করুন। এতে স্লাইডের ইমেজটি দেখা যাবে এবং লুপটি বন্ধ হয়ে যাবে।
1 |
// Create Slider
|
2 |
|
3 |
function wptuts_slider_template() { |
4 |
|
5 |
// Query Arguments
|
6 |
$args = array( |
7 |
'post_type' => 'slides', |
8 |
'posts_per_page' => 5 |
9 |
);
|
10 |
|
11 |
// The Query
|
12 |
$the_query = new WP_Query( $args ); |
13 |
|
14 |
// Check if the Query returns any posts
|
15 |
if ( $the_query->have_posts() ) { |
16 |
|
17 |
// Start the Slider ?>
|
18 |
<div class="flexslider"> |
19 |
<ul class="slides"> |
20 |
|
21 |
<?php |
22 |
// The Loop
|
23 |
while ( $the_query->have_posts() ) : $the_query->the_post(); ?> |
24 |
<li>
|
25 |
|
26 |
<?php // Check if there's a Slide URL given and if so let's a link to it |
27 |
if ( get_post_meta( get_the_id(), 'wptuts_slideurl', true) != '' ) { ?> |
28 |
<a href="<?php echo esc_url( get_post_meta( get_the_id(), 'wptuts_slideurl', true) ); ?>"> |
29 |
<?php } |
30 |
|
31 |
// The Slide's Image
|
32 |
echo the_post_thumbnail(); |
33 |
|
34 |
// Close off the Slide's Link if there is one
|
35 |
if ( get_post_meta( get_the_id(), 'wptuts_slideurl', true) != '' ) { ?> |
36 |
</a>
|
37 |
<?php } ?> |
38 |
|
39 |
</li>
|
40 |
<?php endwhile; ?> |
41 |
|
42 |
</ul><!-- .slides --> |
43 |
</div><!-- .flexslider --> |
44 |
|
45 |
<?php } |
46 |
|
47 |
// Reset Post Data
|
48 |
wp_reset_postdata(); |
49 |
}
|
৬ষ্ঠ ধাপঃ স্লাইডার ব্যবহার
ভালো, আমরা শেষপর্যন্ত স্লাইডারটি তৈরি করলাম! এখন, এটা ব্যবহার করার সময়। আপনি এখন যেকোনো টেম্পলেট ফাইল খুলতে পারেন, যেমন index.php, এবং wptuts_slider_template
ফাংশনটি স্লাইডারে প্রদর্শন করতে echo ব্যবহার করতে পারেন।
তাই আমরা যদি স্লাইডারটি টুয়েন্টি ইলেভেন থিমে হেডারের হোম পেজের পরই প্রদর্শন করতে চাই, তাহলে আমরা index.php ফাইলটি খুলতে পারি এবং get_header(); ?>
এর পরই, নিন্মোক্ত লাইনটি যুক্ত করতে পারিঃ
1 |
<?php echo wptuts_slider_template(); ?> |
কিন্তু কি হবে যদি আপনি এটা কোনও ক্লায়েন্ট বা এমন কারো জন্য তৈরি করতে চান, যারা টেম্পলেট ফাইল ও PHP ছুঁয়েও দেখতে না চায়? আমরা সম্ভবত তাদের জন্য একটি শর্টকোড তৈরি করতে পারি, তাহলে তারা এই স্লাইডারটি শুধুমাত্র [slider]
শর্টকোড দিয়েই ব্যবহার করতে পারবে।
slider.php এর নীচে এটা যুক্ত করুনঃ
1 |
// Slider Shortcode
|
2 |
|
3 |
function wptuts_slider_shortcode() { |
4 |
ob_start(); |
5 |
wptuts_slider_template(); |
6 |
$slider = ob_get_clean(); |
7 |
return $slider; |
8 |
}
|
9 |
add_shortcode( 'slider', 'wptuts_slider_shortcode' ); |
এবার স্লাইডারটি পোস্ট, পেইজ বা অন্য যেকোনও যায়গায় ব্যবহার করা যাবে যেখানে শর্টকোড গ্রহন করা হয়!



ডাউনলোড
যদি আপনার পছন্দ হয়, তাহলে স্লাইডার ফোল্ডারটি ডাউনলোড করে নিতে পারেন, যেটাতে এই টিউটোরিয়ালে দেয়া সব কিছুই পাবেন। আপনি শুধু আপনার থিমের Inc ফোল্ডারে এটি নামিয়ে নিতে পারেন (অথবা অন্য যেকোনো জায়গাও ভালো, কিন্তু নিশ্চিত হউন যাতে নীচের কোডটি ঠিক করে নিতে পারেন) এবং নীচের কোডটি আপনার functions.php ফাইলে যুক্ত করে নিনঃ
1 |
// Create Slider Post Type
|
2 |
require( get_template_directory() . '/inc/slider/slider_post_type.php' ); |
3 |
// Create Slider
|
4 |
require( get_template_directory() . '/inc/slider/slider.php' ); |
নোটঃ এই টিউটোরিয়ালের ক্ষেত্রে, namespace/text ডোমেইন wptuts
ব্যবহার করা হয়েছে। আপনি যদি কপি/পেস্ট করে থাকেন, তাহলে খুঁজে বের করে পরিবর্তন করে নিতে পারেনঃ
-
wptuts_
থেকেyourname_
-
'wptuts'
থেকে'yourname'
আপনি যদি এই টিউটোরিয়ালটি পছন্দ করেন, তাহলে আমাকে জানান এবং আমি আমাদের এই স্লাইডারটি কাস্টমাইজ করার উপর আরও একটি টিউটোরিয়াল তৈরি করবো! তারপর আমরা দেখবো ন্যাভিগেশনের জন্য কিভাবে থাম্বনেইল ব্যবহার করতে হয়, ভিডিও স্লাইড একীভূত এবং ক্যাপশন যোগ করতে হয়।