2013-04-08 46 views
0

新手WordPress開發者在這裏,所以我真的可以使用一些幫助。我正在構建一個顯示功能的小部件,但這些選項並未保存。當你點擊「保存」時,所有的框都會變成空白。我想我錯過了一些明顯的東西!Wordpress小部件不保存選項...缺少明顯的東西?

這裏是我的小部件代碼中的相關部分:

// First create the widget for the admin panel 
class icon_features_widget extends WP_Widget { 

    function icon_features_widget() { 
    $widget_ops = array('description' => __('Displays icon features in a widget', 'icon-feature-widget')); 
    $this->WP_Widget('icon_feature_widget', __('Icon Feature', 'icon-feature-widget'), $widget_ops); 
    } 

    function form($instance) { 

    $icon_feature_title = isset($instance['icon_feature_title']) ? $instance['icon_feature_title'] : ''; 
    $icon_feature_text = isset($instance['icon_feature_text']) ? $instance['icon_feature_text'] : ''; 
    $icon_feature_link_url = isset($instance['icon_feature_link_url']) ? $instance['icon_feature_link_url'] : ''; 
    $icon_feature_link_text = isset($instance['icon_feature_link_text']) ? $instance['icon_feature_link_text'] : ''; 
    $radioValue = isset($instance['radioValue']) ? $instance['radioValue'] : ''; 
    $icon_feature_icon_class = isset($instance['icon_feature_icon_class']) ? $instance['icon_feature_icon_class'] : ''; 
    $icon_feature_custom_icon_url = isset($instance['icon_feature_custom_icon_url']) ? $instance['icon_feature_custom_icon_url'] : ''; 
    ?> 

    <p> 
     <label for="icon_feature_title">Title:</label><br /> 
     <input type="text" name="icon_feature_title" id="icon_feature_title" value="<?php echo $icon_feature_title ; ?>" /> 
    </p> 

    <p> 
     <label for="icon_feature_text">Text:</label><br /> 
     <textarea name="icon_feature_text" id="icon_feature_text" value="<?php echo $icon_feature_text ; ?>" rows="6" cols="21"/></textarea> 
    </p> 

    <p> 
     <label for="icon_feature_link_url">Link URL:</label><br /> 
     <input type="text" name="icon_feature_link_url" id="icon_feature_link_url" value="<?php echo $icon_feature_link_url ; ?>" /> 
    </p> 

    <p> 
     <label for="icon_feature_link_text">Link Text (defaults to "Read More"):</label><br /> 
     <input type="text" name="icon_feature_link_text" id="icon_feature_link_text" value="<?php echo $icon_feature_link_text ; ?>" /> 
    </p> 

    <p>Choose which icon source you'd like to use.</p> 
    <p> 
     <label> 
     <input type="radio" id="iconRadio" name="whichToDisplay" value="icon" <?php echo ($radioValue == 'icon' || $radioValue == '') ? 'checked="checked"':''; ?>/> 
     Choose from included icons 
     </label><br /> 
     <label> 
     <input type="radio" id="customIconRadio" name="whichToDisplay" value="customIcon" <?php echo ($radioValue == 'customIcon') ? 'checked="checked"':''; ?>/> 
     Display custom icon 
     </label><br /> 
     <label> 
     <input type="radio" id="nothingRadio" name="whichToDisplay" value="nothing" <?php echo ($radioValue == 'nothing') ? 'checked="checked"':''; ?>/> 
     Display neither 
     </label><br /><br /> 
    </p> 

    <p> <!-- REPLACE THIS WITH SOME KIND OF ICON CHOOSER DROPDOWN THING --> 
     <label for="icon_feature_icon_class">Icon Class:</label><br /> 
     <input type="text" name="icon_feature_icon_class" id="icon_feature_icon_class" value="<?php echo $icon_feature_icon_class ; ?>" /> 
    </p> 

    <p> <!-- REPLACE THIS WITH A WORDPRESS IMAGE CHOOSER/MEDIA LIBRARY CHOOSER --> 
     <label for="icon_feature_custom_icon_url">Custom Icon URL:</label><br /> 
     <input type="text" name="icon_feature_custom_icon_url" id="icon_feature_custom_icon_url" value="<?php echo $icon_feature_custom_icon_url ; ?>" /> 
    </p> 

    <?php 
    } 

    function update($new_instance, $old_instance) { 
    $instance = $old_instance; 
    $instance['icon_feature_title'] = $new_instance['icon_feature_title']; 
    $instance['icon_feature_text'] = $new_instance['icon_feature_text']; 
    $instance['icon_feature_link_url'] = $new_instance['icon_feature_link_url']; 
    $instance['icon_feature_link_text'] = $new_instance['icon_feature_link_text']; 
    $instance['radioValue'] = $new_instance['radioValue']; 
    $instance['icon_feature_icon_class'] = $new_instance['icon_feature_icon_class']; 
    $instance['icon_feature_custom_icon_url'] = $new_instance['icon_feature_custom_icon_url']; 
    return $instance; 
    } 

謝謝了!

+0

你有調試打開嗎?看看你是否得到錯誤? – 2013-04-08 02:34:53

回答

0

在功能更新嘗試使用$實例作爲空數組不old_instance $和檢查一次有些東西一樣..

function update($new_instance, $old_instance) { 

     $instance = array(); 
......... 
} 
0

感謝您的幫助!固定我的問題,雖然,這是形式的代碼:我沒有使用的id正確WordPress的方法,名稱爲輸入元素&值:

我有這樣的:

<input type="text" name="icon_feature_link_text" id="icon_feature_link_text" value="<?php echo $icon_feature_link_text ; ?>" /> 

我改變它這樣的:

<input type="text" name="<?php echo $this->get_field_name('icon_feature_link_text') ; ?>" id="<?php echo $this->get_field_id('icon_feature_link_text'); ?>" value="<?php echo esc_attr($icon_feature_link_text) ; ?>" /> 

我這樣做對所有的輸入(以及標籤),而不是硬編碼ID &名字,現在它完美的撲救。

謝謝!