Wordpress自定义小部件选择不保存选项

时间:2013-07-14 12:28:26

标签: wordpress-plugin

我对编写Wordpress插件/小部件非常陌生(这是我第一次!)。我已经构建了一个非常基本的Wordpress插件,它由2个文本输入和一个选择字段组成。文本输入正常工作,但是当我点击“保存”按钮时,选择框似乎没有保存。

这是我的插件代码:

<?php
/* Plugin Name: Sidebar Box
Plugin URI: http://www.website.com
Description: Displays contact box in sidebar
Version: 1.0
Author: JM
Author URI: N/A
*/

// use widgets_init action hook to execute custom function
add_action( 'widgets_init', 'jm_box_widget' );

 //register our widget
function jm_box_widget() {
    register_widget( 'jm_box_widget_my_info' );
}

//boj_widget_my_info class
class jm_box_widget_my_info extends WP_Widget {

    //process the new widget
    function jm_box_widget_my_info() {
        $widget_ops = array( 
            'classname' => 'jm_box_widget_class', 
            'description' => 'Sidebar Box Widget.'
            ); 
        $this->WP_Widget( 'jm_box_widget_my_info', 'Box Widget', $widget_ops );
    }

     //build the widget settings form
    function form($instance) {
        $defaults = array( 'title' => 'Box Page Widget', 'description' => '', 'boxtype' => '' ); 
        $instance = wp_parse_args( (array) $instance, $defaults );
        $title = $instance['title'];
        $description = $instance['description'];
        $boxtype = $instance['boxtype'];

        ?>
            <p>Title: <input class="widefat" name="<?php echo $this->get_field_name( 'title' ); ?>"  type="text" value="<?php echo esc_attr( $title ); ?>" /></p>
            <p>Description: <textarea class="widefat" name="<?php echo $this->get_field_name( 'description' ); ?>" / ><?php echo esc_attr( $description ); ?></textarea></p>
    <p>Sex:
            <select id="<?php echo $this->get_field_id( 'boxtype' ); ?>" name="<?php echo $this->get_field_name( 'boxtype' ); ?>" class="widefat" style="width:100%;">
            <option <?php if ( 'box1' == $instance['format'] ) echo 'selected="selected"'; ?> value="box1">box1</option>
    <option <?php if ( 'box2' == $instance['format'] ) echo 'selected="selected"'; ?> value="box2">box2</option>
            </select>
        </p>
        <?php
    }

    //save the widget settings
    function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance['title'] = strip_tags( $new_instance['title'] );
        $instance['description'] = strip_tags( $new_instance['description'] );
        $instance['boxtype'] = ( $new_instance['boxtype'] ); 
        return $instance;
    }

    //display the widget
    function widget($args, $instance) {
        extract($args);

        echo $before_widget;
        $title = apply_filters( 'widget_title', $instance['title'] );
        $description = empty( $instance['description'] ) ? '&nbsp;' : $instance['description']; 
        $boxtype = empty( $instance['boxtype'] ) ? '&nbsp;' : $instance['boxtype']; 

        echo '<div class="sidebar-box" id="' . $boxtype . '" onmouseover="this.style.cursor=\'pointer\'" onmouseup="window.location=\'' . $boxtype . '\'">
                <h3>' . $title . '</h3>
                <p>' . $description . '</p>
                </div>';
        echo $after_widget;
    }
}

&GT;

我不能为我的生活锻炼为什么不能保存。

非常感谢任何帮助。

谢谢,

詹姆斯

1 个答案:

答案 0 :(得分:0)

沿着这条线的某处,您必须将$ instance ['format']更改为$ instance ['boxtype'],但不是在表单中。选项需要改变。

<option <?php if ('box1' == $boxtype )