ساخت افزونه – دو

دسته بندی ها : اخبار سایت 12 اکتبر 2013 خانه وردپرس 1310 بازدید

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

در این مثال ابزارکی برای پلاگین خود می سازیم که دارای مثلاً یک فیلد “نام ابزارک” و یک “فیلد متنی” است

ابتدا باید بدانیم که تولید یک ابزارک در 4+2 مرحله انجام می شود:

1 – پیش تولید ابزارک: ایجاد کلاس برای ابزارک
2 – تولید کننده و یا درج کننده ابزارک (constructor)
3 – ایجاد فرم و شکل ظاهری برای ابزارک
4 – به روز رسانی کننده جهت به روز رسانی اطلاعات درون ابزارک در زمانی است که آنها را تغییر می دهیم
5 – توابع ابزارک (widget) برای نمایش ابزارک در صفحات سایت
6 – مثل بسیاری از توابع، ایجاد اکشن برای ابزارک (همان add_action معروف)

این مراحل به سادگی!! قابل انجامند. چگونه؟ برای مثال برای پلاگین PMG Plug-in که در مرحله قبل ایجاد کرده بودیم توابع زیر را تعریف و درج می کنیم:

1 – ایجاد کلاس برای ابزارک:

class omg_plugin extends WP_Widget {

نکته: آکولاد باز شده در این کد، در انتهای کلاس بسته خواهد شد!

2 – تولید و درج ابزارک:

function omg_plugin() {
         parent::WP_Widget(false, $name = __('OMG Widget', 'omg_widget_plugin') );
}

3 – ایجاد فرم برای ابزارک:
قرار بود برای این ابزارک فقط دو فیلد نام و متن ایجاد کنیم (شبیه ابزارک متن دیفالت وردپرس)
ابتدا تعریف تابعی برای فرم سازی:

function form($mid_var) {
if( $mid_var) {
$title = esc_attr($mid_var['title']);
$text = esc_attr($mid_var['text']);
} else {
$title = '';
$text = '';
}

و سپس خود فرم:

<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title', 'omg_widget_plugin'); ?></label>
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text:', 'omg_widget_plugin'); ?></label>
<input id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" type="text" value="<?php echo $text; ?>" />
</p>

که روی هم رفته به صورت زیر خواهد شد:

function form($mid_var) {
if( $mid_var) {
$title = esc_attr($mid_var['title']);
$text = esc_attr($mid_var['text']);
} else {
$title = '';
$text = '';
}
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title', 'omg_widget_plugin'); ?></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 $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text:', 'omg_widget_plugin'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" type="text" value="<?php echo $text; ?>" />
</p>
<?php
}

* چون قرار است این ابزارک ساز درون فایل افزونه قرار بگیرد در بستن و باز کردن تگ php دقت کنید

4 – به روز رسانی کننده: کارکرد این بخش این است که هرگاه محتویات ابزارک تغییر کند آن را به روزرسانی می نماید و تغییرات را ذخیره خواهد کرد:

function update($new_mid_var, $old_mid_var) {
$mid_var = $old_mid_var;
$mid_var['title'] = strip_tags($new_mid_var['title']);
$mid_var['text'] = strip_tags($new_mid_var['text']);
return $mid_var;
}

5 – نمایش ابزارک در صفحات سایت:

function widget($args, $mid_var) {
extract( $args );
$title = apply_filters('widget_title', $mid_var['title']);
$text = $mid_var['text'];
echo $before_widget;
echo '<div>';
if ( $title ) {
echo $before_title . $title . $after_title;
}
if( $text ) {
echo '<p>'.$text.'</p>';
}
echo '</div>';
echo $after_widget;
}

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

6 – ایجاد اکشن برای ابزارک
مرحله نهایی آن است که این ابزارک عملیاتی شود که با اکشن های معروف وردپرسی انجام می شود:

add_action('widgets_init', create_function('', 'return register_widget("omg_plugin");'));

* دقت کنید که کلاس ابزارک که در ابتدا با آکولاد باز شده بود می بایست قبل از ایجاد اکشن بسته شود.

در نهایت توابه فوق به صورت زیر مجتمع می گردند:

// ایجاد ابزارک برای پلاگین
class omg_plugin extends WP_Widget {
// درج و ثبت ابزارک
function omg_plugin() {
         parent::WP_Widget(false, $name = __('OMG Widget', 'omg_widget_plugin') );
}
//فرم سازی برای ابزارک
function form($mid_var) {
if( $mid_var) {
$title = esc_attr($mid_var['title']);
$text = esc_attr($mid_var['text']);
} else {
$title = '';
$text = '';
}
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Widget Title', 'omg_widget_plugin'); ?></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 $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text:', 'omg_widget_plugin'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" type="text" value="<?php echo $text; ?>" />
</p>
<?php
}
//به روزرسانی اطلاعات ابزارک
function update($new_mid_var, $old_mid_var) {
$mid_var = $old_mid_var;
$mid_var['title'] = strip_tags($new_mid_var['title']);
$mid_var['text'] = strip_tags($new_mid_var['text']);
return $mid_var;
}
//نمایش ابزارک در صفحات سایت
function widget($args, $mid_var) {
extract( $args );
$title = apply_filters('widget_title', $mid_var['title']);
$text = $mid_var['text'];
echo $before_widget;
echo '<div>';
if ( $title ) {
echo $before_title . $title . $after_title;
}
if( $text ) {
echo '<p>'.$text.'</p>';
}
echo '</div>';
echo $after_widget;
}
}
//اکشن
add_action('widgets_init', create_function('', 'return register_widget("omg_plugin");'));

حالا باید بین این ابزارک ساز و پلاگین ارتباط برقرار شود. چگونه؟ این گونه که کد بالا را درون فایل omg.php قرار می دهیم. قرار دهید و امتحان کنید.

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

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

نظرات کاربران

    دیدگاهتان را بنویسید

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

    Time limit is exhausted. Please reload CAPTCHA.

    این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    لینک کوتاه :
    0