آموزش ساخت افزونه ابزارک اختصاصی

فهرست مطالب

ابزارک ها قسمت هایی در سایت هستند که امکان قرار دادن و یا اضافه کردن محتوا و بخش های را به سایت می دهد، ابزارک ها در وردپرس شامل : بایگانی ، دسته ها ، برچسب ها ، جستجو ، نوشته های اخیر ، تقویم و … است . در واقع شما تقریبا محدود به قراردادن چنین گزینه هایی در ابزارک هستید ولی گاهی پیش خواهد آمد که بخواهید برای سایت ابزارک های سفارشی را ایجاد کنید . در این جا چه باید کرد ؟

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

ابزارک سفارشی در وردپرس

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

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

ساختار اولیه ی ابزارک وردپرس

ابزارک ها دارای کلاس wp_widget هستند ، این چیزی است که قانون توسعه وردپرس می گوید پس با این وجود برای توسعه ابزارک ها و ساخت ابزارک سفارشی نیاز به توسعه این کلاس می باشد . اولین کار ساخت یک فایل  php در مسیر  wp_content / plugins /my_widget / می باشد سپس در ابتدای فایل ، کد زیر را قرار دهید :

سپس فایل مورد نظر را ذخیره کرده و به سراغ پیشخوان وردپرس رفته و افزونه را فعال کنید.

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

<?php
/*
Plugin Name: My Widget
Plugin URI: http://wordpress.org/extend/plugins/#
Description: This is an example plugin
Author: Your Name
Version: 1.0
Author URI: http://example.com/
*/

زمان آن رسیده که کلاس wp_widget  را گسترش دهید. بدین منظور قطعه کد زیر را داخل فایل افزونه وارد کنید.

// register My_Widget
add_action( 'widgets_init', function(){
register_widget( 'My_Widget' );
});

Add_action  دستورالعملی برای فراخوانی عملگر widgets_init می باشد. که در تمامی افزونه ها به صورت پیش فرض قرار میگیرد.
عملکرد register_widget برای ابزارک خاصی است که میتواند کلاس wp _ widget را توسعه دهد:

class My_Widget extends WP_Widget {
// class constructor
public function __construct() {}
 
// output the widget content on the front-end
public function widget( $args, $instance ) {}
 
// output the option form field in admin Widgets screen
public function form( $instance ) {}
 
// save options
public function update( $new_instance, $old_instance ) {}
}

خب افزونه ما آماده شده است تنها به 4 کلاس نیاز داریم :

  • Constract__: این کلاس در جهت ساخت پارامترهای ابزارک به صورت سفارشی ،عمل می کند .
  • ()Widget:  برای نمایش محتوای ابزارک از این کلاس استفاده می شود .
  • ()form : عناصر ابزارک در پیشخوان ، برای نمایش فرم است.
  • ()update: به روزرسانی عناصر ابزارک با این گزینه انجام خواهد شد .

تنظیمات ابزارک

حال باید قسمت تنظیمات افزونه را ایجاد کنیم . برای افزودن توضیحات مربوط به ابزارک مانند شناسه ی ابزارک، عنوان، تنظیمات اضافی و…  کدهای زیر را در فایل php  وارد کنید:

public function __construct() {
$widget_ops = array(
'classname' => 'my_widget',
'description' => 'A plugin for Kinsta blog readers',
);
parent::__construct( 'my_widget', 'My Widget', $widget_ops );
}

ساخت فرم ابزارک در پنل مدیریت

در اینجا باید فرمی را برای تنظیمات ابزارک در سمت مدیریت ایجاد کنیم تا کاربران به سادگی بتوانند بسادگی تنظیمات این بخش را انجام دهند .این کار بر عهده ی کلاس  () form میباشد:

public function form( <span class="hljs-variable">$instance</span> ) { <span class="hljs-variable">$title</span> = ! empty( <span class="hljs-variable">$instance</span>[<span class="hljs-string">'title'</span>] ) ? <span class="hljs-variable">$instance</span>[<span class="hljs-string">'title'</span>] : esc_html__( <span class="hljs-string">'Title'</span>, <span class="hljs-string">'text_domain'</span> ); ?> <p> <label <span class="hljs-keyword">for</span>=<span class="hljs-string">"<?php echo esc_attr( <span class="hljs-variable">$this</span>->get_field_id( 'title' ) ); ?>"</span>> <?php esc_attr_e( <span class="hljs-string">'Title:'</span>, <span class="hljs-string">'text_domain'</span> ); ?> </label> <input class=<span class="hljs-string">"widefat"</span> id=<span class="hljs-string">"<?php echo esc_attr( <span class="hljs-variable">$this</span>->get_field_id( 'title' ) ); ?>"</span> name=<span class="hljs-string">"<?php echo esc_attr( <span class="hljs-variable">$this</span>->get_field_name( 'title' ) ); ?>"</span> <span class="hljs-built_in">type</span>=<span class="hljs-string">"text"</span> value=<span class="hljs-string">"<?php echo esc_attr( <span class="hljs-variable">$title</span> ); 

در اینجا تصمیم داریم برای ابزارک های خود یک چک لیست تعریف کنیم:

public function form( $instance ) {
 
$posts = get_posts( array(
'posts_per_page' => 20,
'offset' => 0
) );
$selected_posts = ! empty( $instance['selected_posts'] ) ? $instance['selected_posts'] : array();
?>
<div style="max-height: 120px; overflow: auto;">
<ul>
<?php foreach ( $posts as $post ) { ?>
 
<li><input
type="checkbox"
name="<?php echo esc_attr( $this->get_field_name( 'selected_posts' ) ); ?>[]"
value="<?php echo $post->ID; ?>"
<?php checked( ( in_array( $post->ID, $selected_posts ) ) ? $post->ID : '', $post->ID ); ?> />
<?php echo get_the_title( $post->ID ); ?></li>
 
<?php } ?>
</ul>
</div>
<?php
}

نتیجه ای که بدست می آید به صورت زیر است:

سفارشی سازی ابزارک

بروزرسانی تنظیمات ابزارک

برای بروزرسانی همانطور که گفتیم از کلاس  () update استفاده میکنیم و دستورالعمل آن را درون فایل ابزارک قرار می دهیم :

public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
 
$selected_posts = ( ! empty ( $new_instance['selected_posts'] ) ) ? (array) $new_instance['selected_posts'] : array();
$instance['selected_posts'] = array_map( 'sanitize_text_field', $selected_posts );
 
return $instance;
}
}

خروجی ابزارک

از کلاس  ()widget  برای نمایش خروجی و تنظیمات ابزارک در محیط کاربر استفاده می کنیم  برای این کار میتوان از قطعه کد زیر استفاده کرد:

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'];
}
 
if( ! empty( $instance['selected_posts'] ) && is_array( $instance['selected_posts'] ) ){
 
$selected_posts = get_posts( array( 'post__in' => $instance['selected_posts'] ) );
?>
<ul>
<?php foreach ( $selected_posts as $post ) { ?>
<li><a href="<?php echo get_permalink( $post->ID ); ?>">
<?php echo $post->post_title; ?>
</a></li>
<?php } ?>
</ul>
<?php
 
}else{
echo esc_html__( 'No posts selected!', 'text_domain' );
}
 
echo $args['after_widget'];
}
}

خروجی حاصل را می توانید در سمت کاربر مشاهده کنید:

سفارشی سازی ابزارک

 شما میتوانید با استفاده از کد های بالا برای خودتان هر تعداد ابزارک با کاربرد های مختلف را بسازید توجه داشته باشید که این کد ها را میتوانید در فایل توابع نیز قرار دهید بسته به خودتان نیز میتوانید افزونه هم بسازید همانطور که در بالا آموزش داده شد با روش افزونه سازی آشنا شدید و میتوانید از این روش برای استفاده های متعدد بهره گیرید مانند ساخت گالری تصاویر یا چیز های دیگر ، در این آموزش با نحوه ساخت ابزارک سفارشی آشنا شدیم .
با تشکر از همراه شما . موفق باشید .
1.5/5 - (2 امتیاز)
Picture of پارسا مجیدی
پارسا مجیدی
یادگیری کسب درآمد از اینترنت آسان است ولی رسیدن به آن سخت !
اشتراک
اطلاع از
guest
0 نظرات
جدیدترین
قدیمی ترین بیشترین آرا
بازخورد درون خطی
مشاهده همه نظرات
0
نظر خود را به اشتراک بگذاریدx
عضو شوید و همه محصولات را رایگان دانلود کنید!!!