2015-02-04 2 views
0

안녕하세요 저는 Wordpress를 처음 접했고 사용자 정의 위젯을 만들려고합니다. 폼을 표시하고 값을 입력 할 수는 있지만 저장을 누를 때마다 위젯은 기본 값으로 돌아갑니다. 내게 필요한 옵션 모드의 값을 추가하려고했지만 아무 소용이 없습니다. 여기 Wordpress 사용자 정의 위젯이 값을 저장하지 않습니다

내 위젯 클래스의 복사 :

function loadsidewidget() 
{ 
    register_widget('WP_Widget_sidebar_textwidget'); 
} 
add_action('widgets_init', 'loadsidewidget'); 

class WP_Widget_sidebar_textwidget extends WP_Widget 
{ 

    function __construct() { 
     parent::__construct(
       'WP_Widget_sidebar_textwidget', 
      __('Sidebar Textwdiget','sidewidget_domain'), 
      array('description' => __('Sample widget' ,'sidewidget_domain'),) 
    ); 
} 

public function widget($args, $instance) 
{ 
    extract($args); 
    extract($instance); 
    $title = apply_filters('widget_title',$instance['title']); 
    $show_info = isset($instance['textarea']) ? $instance['textarea'] :''; 
    echo $args['before_widget']; 
    if(!empty($title)) 
    { 
     echo $args['before_title']; 
     echo '<i class="fa fa-align-left"></i>'.$title; 
     echo $args['after_title']; 
    } 
    echo '<p>'.$instance['textarea'].'</p>'; 
} 

public function update($new_instance, $old_instance) 
{ 
    $instance =$old_instance; 
    $instance['title'] = strip_tags($new_instance['title']); 
    $instance['textarea'] = esc_textarea($new_instance['textarea']); 
    return $instance; 
} 

//backend 
public function form($instance) 
{ 

    $instance = wp_parse_args(array($intsance),array('title'=>'Title','textarea'=>'default')); 
    if(isset($instance['title'])) 
    { 
     $title = strip_tags($instance['title']); 
    } 
    else 
    { 
     $title = 'Title'; 
    } 
    $titleId = $this->get_field_id('title'); 
    $titleName = $this->get_field_name('title'); 
    $text = $instance['textarea']; 
    $contentId = $this->get_field_id('textarea'); 
    $contentName = $this->get_field_name('textarea'); 

    ?> 

    <p> 
    <label for="<?php echo $titleId; ?>"><?php echo __('Title','sidewidget_domain');?></label> 
    <input class="widefat" id="<?php echo $titleId;?>" name="<?php echo $titleName;?>" value="<?php echo $title;?>"/> 
    </p> 
    <p> 
    <label for="<?php echo $contentId?>"><?php echo __('Content','sidewidget_domain');?></label> 
    <textarea class="widefat" id="<?php echo $contentId;?>" name="<?php echo $contentName;?>"><?php echo $text;?></textarea> 
    </p> 
    <h1><?php echo $instance['textarea'];?></h1> 
    <?php 
    } 
} 

나는 그것이 기본 위젯 이드가 함께 할 수있는 뭔가의 느낌을 가지고 있지만 잘 모르겠어요.

답변

0

내가 알아 낸 문제는이 라인이 $instance = wp_parse_args(array($intsance),array('title'=>'Title','textarea'=>'default')); if(isset($instance['title']));인데 제거했는데 효과가있었습니다.

관련 문제