TODO: To change the header's content go to Dr.Explain menu Options : Project Settings : HTML (CHM) Export : Setup HTML Template and Layout
×
Menu
Index

Tùy biến trường widget

 
Thêm trường cho mọi widget. Xem hình minh họa:
Thêm trường vào widget:
Thêm fields với filter 'in_widget_form'.
//Add input fields(priority 5, 3 parameters)
add_action('in_widget_form', 'hw_in_widget_form',5,3);
 
//continue widgets fields
function hw_in_widget_form($t,$return,$instance){
    $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '', 'float' => 'none') );
    if ( !isset($instance['float']) )
        $instance['float'] = null;
    if ( !isset($instance['texttest']) )
        $instance['texttest'] = null;
    ?>
    <p>
        <input id="<?php echo $t->get_field_id('width'); ?>" name="<?php echo $t->get_field_name('width'); ?>" type="checkbox" <?php checked(isset($instance['width']) ? $instance['width'] : 0); ?> />
        <label for="<?php echo $t->get_field_id('width'); ?>"><?php _e('halbe Breite'); ?></label>
    </p>
    <p>
        <label for="<?php echo $t->get_field_id('float'); ?>">Float:</label>
        <select id="<?php echo $t->get_field_id('float'); ?>" name="<?php echo $t->get_field_name('float'); ?>">
            <option <?php selected($instance['float'], 'none');?> value="none">none</option>
            <option <?php selected($instance['float'], 'left');?>value="left">left</option>
            <option <?php selected($instance['float'], 'right');?> value="right">right</option>
        </select>
    </p>
    <input type="text" name="<?php echo $t->get_field_name('texttest'); ?>" id="<?php echo $t->get_field_id('texttest'); ?>" value="<?php echo $instance['texttest'];?>" />
    <?php
    $return = null;
    return array($t,$return,$instance);
}
 
Lưu thông tin trường:
Để cập  nhật các trường bạn mới tạo thêm cho các widget theo như ở trên chúng ta thêm filter 'widget_update_callback'.
//Callback function for options update (priorität 5, 3 parameters)
add_filter('widget_update_callback', 'hw_in_widget_form_update',5,3);
 
function hw_in_widget_form_update($instance, $new_instance, $old_instance){
    $instance['width'] = isset($new_instance['width']);
    $instance['float'] = $new_instance['float'];
    $instance['texttest'] = strip_tags($new_instance['texttest']);
    return $instance;
}
 
Sử dụng trường tùy biến cho widget:
Nếu bạn muốn sửa các tham số của sidebar nơi widget hoạt động, bạn có thể sử dụng hook 'dynamic_sidebar_params'. Ví dụ sau mình thêm trường background tạo mầu nền cho widget.
add_filter('dynamic_sidebar_params', 'hw_dynamic_sidebar_params');
function hw_dynamic_sidebar_params($params){
    global $wp_registered_widgets;
    $widget_id = $params[0]['widget_id'];
    $widget_obj = $wp_registered_widgets[$widget_id];
    $widget_opt = get_option($widget_obj['callback'][0]->option_name);
    $widget_num = $widget_obj['params'][0]['number'];
    if (isset($widget_opt[$widget_num]['background'])){
 
             $float = $widget_opt[$widget_num]['background'];
            $params[0]['before_widget'] = preg_replace('/class="/', 'class="'.$float.' custom-field ',  $params[0]['before_widget'], 1);
    }
    return $params;
}
 
 
Made with help of Dr.Explain

Unregistered version