dongluanguang4774 2015-02-04 14:46
浏览 66
已采纳

Wordpress自定义小部件不会保存值

Hello I am pretty new to Wordpress and I am trying to make a custom widget. I can get the form to display and enter values however whenever I press save, the widget reverts back to it's default values. I have tried adding in the values in accessibility mode also, but to no avail.

Here is a copy of my widget class:

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 
  } 
}

I have a feeling it's something to do with the base widget Id but I'm not sure.

  • 写回答

1条回答 默认 最新

  • douxiong5972 2015-02-04 15:13
    关注

    I figured it out, the problem was this line $instance = wp_parse_args(array($intsance),array('title'=>'Title','textarea'=>'default')); if(isset($instance['title']));, I removed it and it worked.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?