ایجاد ابزارک اختصاصی در وردپرس

نویسنده : محمد جواد فرکاریان ۱۸ اردیبهشت ۱۳۹۵

creat-widget

سلام

شاید برای شما عزیزان این سوال پیش اومده باشه که چطوری میتوان یک برای سایت وردپرسی ابزارک اختصاصی ساخت و اینکه شاید دلتان بخواهید پوسته وردپرسی خود را حرفه ای تر کنید و به همین دلیل بخواهید برای پوسته خود ابزارک اختصاصی ایجاد کنید.

در این مقاله میخواهیم به شما عزیزان یاد بدهیم که چگونه ابزارک اختصاصی ایجاد کنید.پس باما همراه باشید و لبخند را هم فراموش نکنید 😉

شما برای ایجاد یک ابزارک اختصاصی باید کد زیر را به فایل functions.php اضافه کنید و یا اگر میخواهید که کد ها را داخل functions.php قرار ندهید میتوانید یک فایل با نام widget.php ایجاد کنید(به جای widget میتوانید نام مورد نظر خود را بنویسید) و کد ها را داخل این فایل قرار دهید.

<pre>class My_Widget extends WP_Widget {

	/**
	 * Sets up the widgets name etc
	 */
	public function __construct() {
		$widget_ops = array( 
			'classname' => 'my_widget',
			'description' => 'توضیحات ابزارک',
		);
		parent::__construct( 'my_widget', 'نام ابزارک', $widget_ops );
	}

	/**
	 * Outputs the content of the widget
	 *
	 * @param array $args
	 * @param array $instance
	 */
	public function widget( $args, $instance ) {
		// کد هایی که باید در خروجی نشان داده شوند را اینجا وارد کنید.
	}

	/**
	 * Outputs the options form on admin
	 *
	 * @param array $instance The widget options
	 */
	public function form( $instance ) {
		// خروجی در قسمت مدیریت ابزارک ها.
	}

	/**
	 * Processing widget options on save
	 *
	 * @param array $new_instance The new options
	 * @param array $old_instance The previous options
	 */
	public function update( $new_instance, $old_instance ) {
		// processes widget options to be saved
	}
}</pre>

به جای عبارت ” // کد هایی که باید در خروجی نشان داده شوند را اینجا وارد کنید.” کد های خود را بنویسید که میخواهید پس از فعالسازی ابزارک در سایت نمایش داده شود.

بخوانید  انتشار پوسته وردپرس در تم فارست

به جای “// خروجی در قسمت مدیریت ابزارک ها.” میتوانید در قسمت مدیریت ابزارک برای ابزارک فیلدی تعریف کنید.

خب حالا ما میخواهیم یک ابزارک ایجاد کنیم که در خروجی عبارت “سلام دنیا” را به ما نمایش دهد.

<pre>/**
 * Adds Foo_Widget widget.
 */
class Foo_Widget extends WP_Widget {

	/**
	 * Register widget with WordPress.
	 */
	function __construct() {
		parent::__construct(
			'foo_widget', // Base ID
			__( 'نام ابزارک', 'text_domain' ), // Name
			array( 'description' => __( 'توضیح ابزارک', 'text_domain' ), ) // Args
		);
	}

	/**
	 * Front-end display of widget.
	 *
	 * @see WP_Widget::widget()
	 *
	 * @param array $args     Widget arguments.
	 * @param array $instance Saved values from database.
	 */
	public function widget( $args, $instance ) {
		echo $args['before_widget'];
		if ( ! empty( $instance['title'] ) ) {
			echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];
		}
		echo __( 'سلام دنیا!', 'text_domain' );
		echo $args['after_widget'];
	}

	/**
	 * Back-end widget form.
	 *
	 * @see WP_Widget::form()
	 *
	 * @param array $instance Previously saved values from database.
	 */
	public function form( $instance ) {
		$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'عنوان جدید', 'text_domain' );
		?>
		<p>
		<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> 
		<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
		</p>
		<?php 
	}

	/**
	 * Sanitize widget form values as they are saved.
	 *
	 * @see WP_Widget::update()
	 *
	 * @param array $new_instance Values just sent to be saved.
	 * @param array $old_instance Previously saved values from database.
	 *
	 * @return array Updated safe values to be saved.
	 */
	public function update( $new_instance, $old_instance ) {
		$instance = array();
		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';

		return $instance;
	}

} // class Foo_Widget</pre>

خب هنوز کار تمام نشده و ما برای اینکه ابزارک را فعال کنیم باید کد زیر را به اخر کد بالا اضافه کنیم:

<pre>// register Foo_Widget widget
function register_foo_widget() {
    register_widget( 'Foo_Widget' );
}
add_action( 'widgets_init', 'register_foo_widget' );</pre>

در حالت کلی کد به صورت زیر میشود:


/**
* Adds Foo_Widget widget.
*/
class Foo_Widget extends WP_Widget {

/**
* Register widget with WordPress.
*/
function __construct() {
parent::__construct(
'foo_widget', // Base ID
__( 'نام ابزارک', 'text_domain' ), // Name
array( 'description' => __( 'توضیح ابزارک', 'text_domain' ), ) // Args
);
}

/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget( $args, $instance ) {
echo $args['before_widget'];
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];
}
echo __( 'سلام دنیا!', 'text_domain' );
echo $args['after_widget'];
}

/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form( $instance ) {
$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'عنوان جدید', 'text_domain' );
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
</p>
<?php
}

/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';

return $instance;
}

} // class Foo_Widget
// register Foo_Widget widget
function register_foo_widget() {
register_widget( 'Foo_Widget' );
}
add_action( 'widgets_init', 'register_foo_widget' );

خب حالا میتوانید با مراجعه به قسمت مدیریت ابزارک ها از طریق “نمایش>ابزارک ها” ابزارک جدیدی را که ایجاد کرده اید مشاهده کنید و ان را فعال کنید.

بخوانید  فعال کردن بروز رسانی خودکار افزونه ها در وردپرس

پس از اضافه کردن کد در قسمت مدیریت ابزارک ایجاد شده به این شکل است :

creat-widget-screen1

در قسمت خروجی نیز به این صورت میباشد:

creat-widget-screen2

امیدوار هستیم که براتون مفید واقع شده باشه 😉

موفق باشید

منبع:codex.wordpress.org

 

محمد جواد فرکاریان

علاقه مند به سیستم مدیریت محتوای وردپرس هستم و اموزش ها ی در رابطه با سیستم مدیریت محتوای وردپرس را با شما عزیزان به اشتراک میگذارم . لبخند را هیچ وقت فراموش نکنید ;-)

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *