বুধবার,  রাত ৮:০১  ♦  ১৮ই অক্টবর, ২০১৭ ইং, ৩রা কার্তিক, ১৪২৪ বঙ্গাব্দ ( হেমন্তকাল ), ২৮শে মহররম, ১৪৩৯ হিজরী  ♦
ওয়ার্ডপ্রেস টিপস
iftekhar
  • 43 টি টিপস
About Author

আমি ইফতেখার, TiPS4BLOG এর সম্পাদক এবং লেখক। আপনাদের দারুন আর মানসম্মত টিপস নিয়মিত উপহার দেওয়াই আমার লক্ষ্য।

২ বছর ১ মাস ২ সপ্তাহ আগে
ওয়ার্ডপ্রেস উইজেট
বিভাগ: ওয়ার্ডপ্রেস অক্টো. 8, 2015  -  1:05:00 অপরাহ্ন (  ২ বছর ১১ দিন  আগে  )

ওয়ার্ডপ্রেস উইজেট [পর্ব-৫] :: উইজেট সাইটে প্রদর্শন করা

অ-
অ+

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

বিজ্ঞাপন

রিসেন্ট টিপস প্রদর্শন

রিসেন্ট টিপস দেখানো একদমি সহজ। এছাড়া রিসেন্ট টিপসের জন্য ওয়ার্ডপ্রেসের নিজস্ব উইজেটই আছে। আমরা শেখার জন্য সহজ বিধায় এটাকে বেছে নিয়েছি। যেটা করতে হবে, একটি নতুন ফাংশন তৈরি করবো আমরা T4B_Recent_Posts_Widget ক্লাসের বাইরে। পরে ফাংশনটিকে ক্লাসের মধ্যে কল করবো। আমরা WP_Query ব্যবহার করে প্রথমে টিপসগুলোকে ক্যুয়েরী করবো। কথা না বাড়িয়ে ঝটপট নিচের ফাংশনটি T4B_Recent_Posts_Widget ক্লাসের বাইরে বসিয়ে দিন:

function display_recent_post($post_count) {
	$the_query = new WP_Query( array( 'posts_per_page' => 5, 'order' => 'DESC' ) );

	if ($the_query->have_posts()) :
		while ( $the_query->have_posts() ) : $the_query->the_post();
	
			echo '<li><a href="'.get_permalink().'">';
				echo wp_trim_words( get_the_title(), 12, ' ...' );
			echo '</a></li>';
	
		endwhile;
		wp_reset_postdata();
	endif;
}

ফাংশনটিতে আমরা $post_count নামে একটি প্যারামিটার ব্যবহার করেছি, যার ভ্যালূ হবে ইউজার কতৃক ফর্মের “Number of Posts:” ফিল্ডে দেওয়া সংখ্যা। wp_trim_words ওয়ার্ডপ্রেসের একটি নিজস্ব ফাংশন, যার মাধ্যমে আমরা টিপসের শিরোনামকে একটি নির্দিষ্ট দৈর্ঘ্যের মধ্যে রেখেছি। দৈর্ঘ্য অতিক্রম করলে “…” চিহ্ন দেখাবে। চাইলে শুধু get_the_title() ইউজ করলেও সমস্যা নাই, তবে অনেক বড় শিরোনাম হলে সেটি সাইডবারে ঠিক মানানসই হবে না। তাহলে, উইজেটের মাধ্যমে সাইটে রিসেন্ট টিপস প্রদর্শনের জন্য আমাদের প্রাথমিক কাজ শেষ। এখন আমরা উপরের ফাংশনটিকে উইজেটে কল করে পুরো কাজ সম্পন্ন করবো।

উইজেট ফাংশন তৈরি

T4B_Recent_Posts_Widget ক্লাসে শুধু আর একটি ফাংশন বাঁকি আছে সম্পন্ন করা। এটি হচ্ছে widget ফাংশন। এই ফাংশনটিই মূলত আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়। এটার একটি গঠনপ্রণালী আছে:

	function widget($args, $instance) {
		extract( $args );
		echo $before_widget;
			echo $before_title . 'title' . $after_title;
		echo $after_widget;
	}

এই গঠনকে কাজে লাগিয়েই আমরা ফাংশনটিকে এডিট করবো নিচের মতো করে:

	function widget( $args, $instance ) {
		extract( $args );
		$title = apply_filters('widget_title', $instance['title'] );
		$count = $instance['numberofposts'];
		echo $before_widget;

		if ( $title )
			echo $before_title . $title . $after_title;

		echo '<ul>' . display_recent_post($count) . '</ul>';

		echo $after_widget;
	}

এখানে আমরা $before_widget এবং $after_widget এর মধ্যে আগের তৈরি display_recent_post() ফাংশনকে কল করেছি এবং প্যারামিটার হিসেবে ইউজার ফর্মে যতগুলো সংখ্যা দিবে তা উল্লেখ করেছি।

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

recent post widget

চূড়ান্ত প্লাগিন

তাহলে আমরা একটি সম্পূর্ণ উইজেট প্লাগিন তৈরি করে ফেলেছি! অনেকটা এক ঢিলে দুই পাখি মারার মতো। উইজেট তৈরি করাও হলো, আবার প্লাগিন তৈরি করাও শেখা হলো।

পাঁচটি পর্বের এই সিরিজে আমরা পুরো কাজটি শেষ করেছি। আপনাদের আরও ভালোভাবে বোঝার জন্য সুবিধা করে দিতে নিচে সম্পূর্ণ প্লাগিনটি তুলে ধরা হলো, যা পাঁচটি সিরিজ জুরে বানানো হয়েছে:

<?php
/*
Plugin Name: T4B Recent Posts
Description: This widget will display a number of recent posts in your blog.
Version: 0.1
Author: Iftekhar
Author URI: http://tips4blog.com
License: GPLv2
*/
?>
<?php
/* Display the recent post */
function display_recent_post($post_count) {
	$the_query = new WP_Query( array( 'posts_per_page' => 5, 'order' => 'DESC' ) );

	if ($the_query->have_posts()) :
		while ( $the_query->have_posts() ) : $the_query->the_post();
	
			echo '<li><a href="'.get_permalink().'">';
				echo wp_trim_words( get_the_title(), 12, ' ...' );
			echo '</a></li>';
	
		endwhile;
		wp_reset_postdata();
	endif;
}
class T4B_Recent_Posts_Widget extends WP_Widget {

	function __construct() {

		parent::__construct(

			// base ID of the widget
			't4b_recent_posts_widget',

			// name of the widget
			__('Display Recent Posts', 't4b' ),

			// widget options
			array (
				'description' => __( 'A widget to display a number of recent posts in your blog.', 't4b' )
			)

		);

	}

	function form( $instance ) {

		$defaults = array(
			'title' => __('Recent Posts'),
			'numberofposts' => '5'
		);
		$instance = wp_parse_args( (array) $instance, $defaults );
		$title = $instance[ 'title' ];
		$numberofposts = $instance[ 'numberofposts' ];

		// markup for form ?>
		<p>
			<label for="<?php echo $this->get_field_id( 'title' ); ?>">Widget Title:</label>
			<input class="widefat" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" />
		</p>
		<p>
			<label for="<?php echo $this->get_field_id( 'numberofposts' ); ?>">Number of Posts:</label>
			<input class="widefat" type="text" id="<?php echo $this->get_field_id( 'numberofposts' ); ?>" name="<?php echo $this->get_field_name( 'numberofposts' ); ?>" value="<?php echo esc_attr( $numberofposts ); ?>" />
		</p>

		<?php
	}

	function update( $new_instance, $old_instance ) {

		$instance = $old_instance;
		$instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
		$instance['numberofposts'] = $new_instance['numberofposts'];
		return $instance;

	}

	function widget( $args, $instance ) {
		extract( $args );
		$title = apply_filters('widget_title', $instance['title'] );
		$count = $instance['numberofposts'];
		echo $before_widget;

		if ( $title )
			echo $before_title . $title . $after_title;

		echo '<ul>' . display_recent_post($count) . '</ul>';

		echo $after_widget;
	}
}
?>
<?php
/* registers the widget. */
function t4b_register_recent_posts_widget() {
	register_widget( 'T4B_Recent_Posts_Widget' );
}
add_action( 'widgets_init', 't4b_register_recent_posts_widget' );
?>

সারসংক্ষেপ

পুরো সিরিজটিতে আমরা শিখলাম যে উইজেট কয়েকটি ধাপে তৈরি করতে হয়, এগুলো হলো:

  • উইজেট রেজিস্টার করা
  • উইজেটের ফাংশনগুলোকে ধারণ করার জন্য একটি ক্লাস তৈরি করা
  • উইজেট নির্মাণের জন্য একটি construct ফাংশন তৈরি করা
  • উইজেট স্ক্রিনে উইজেটের ফর্মের জন্য একটি form ফাংশন তৈরি করা
  • উইজেট যেন ফর্মটিকে আপডেট করতে পারে সেজন্য update ফাংশন তৈরি করা
  • উইজেটের আউটপুট দেখানোর জন্য widget ফাংশন তৈরি করা

আশা করি এখন আপনারা সহজেই উইজেট তৈরি করতে পারবেন। আজকের মতো এ পর্যন্তই। যদি সিরিজটি শিক্ষণীয় ও উপভোগ্য হয়ে থাকে, অবশ্যই শেয়ার করে অন্যদের সিরিজটির বিষয়ে জানাবেন। যদি আপনার কোন মতামত থেকে থাকে অথবা আপনি কোন কিছু সুপারিশ করতে চান, নিশ্চিন্তে নিচে মন্তব্য করতে পারেন, ধন্যবাদ।

Ads by rwc
বিজ্ঞাপন

নির্বাচিত টিপস মনোনয়ন

0

টিপসটি কি উপভোগ করেছেন?

এই টিপসের মতো এবং এরকম আরও ভালো মানের টিপসের জন্য ইমেইলের মাধ্যমে নিয়মিত আপডেট পেতে চাইলে TiPS4BLOG নিউজলেটারে সাবস্ক্রাইব করতে ভুলবেন না!

এছাড়াও আপনি পছন্দ করতে পারেন

এই টিপসের জন্য এখনো কোন মতামত দেওয়া হয় নাই

আপনার মতামত দিন

যদি আপনার কোন বক্তব্য থেকে থাকে অথবা আপনি কোন কিছু সুপারিশ করতে চান অথবা বোঝার ক্ষেত্রে কোন সমস্যা হয়, নিশ্চিন্তে নিচে মতামত দিতে পারেন। দয়া করে স্প্যামিং করবেন না এবং কোন বাজে ভাষা ব্যবহার করবেন না। আমরা আপনাদের কাছ থেকে অর্থবহ এবং গঠনমূলক মতামত আশা করি।


9 − তিন =