web-dev-qa-db-ja.com

ウィジェット開発 - ドロップダウンオプションは保存されません

だから、私はうまくドロップダウンオプションを追加することに成功した、問題は私がすべてのオプションが削除されて保存をクリックしたときに、しかし、選択されたオプションは正常に実装されている。

関連するコードは次のとおりです。

function widget($args, $instance) {
        extract( $args );

        $pfxattribution = $instance['pfx-attribution'];
}

<p>
            <label for="<?php echo $this->get_field_id('pfx-attribution'); ?>"><?php _e('Choose attribution:'); ?></label>
            <select id="<?php echo $this->get_field_id('pfx-attribution'); ?>" name="<?php echo $this->get_field_name('pfx-attribution'); ?>" class="widefat" /> 
            <option>Purefx</option>
            <option>Foreign Exchange</option>
            <option>Currency Exchange</option>
            </select>
            </p>

function update($new_instance, $old_instance) {
        // Get the old values
        $instance = $old_instance;

        // Update with any new values (and sanitise input)
        $instance['pfx-attribution'] = strip_tags( $new_instance['pfx-attribution'] );

       return $instance;
}

任意の助けは大歓迎です

6
Danny

Danny、これは私が作ったプラグインからまっすぐ引き上げられました:

 <?php function form($instance){    
    $instance = wp_parse_args( (array) $instance, $this->w_arg );
  ?>
  <p>
    <select id="<?php echo $this->get_field_id('order'); ?>" name="<?php echo $this->get_field_name('order'); ?>" type="text">
        <option value="asc" <?php selected($instance['order'], 'asc'); ?>>ASC </option>
        <option value="desc" <?php selected($instance['order'], 'desc');?>>DESC </option>
    </select>
</p>

<?php
  }
?>

コードの残りの部分を見ていないと、問題の根本を確認できませんが、フォームがフォーム関数内にラップされていない可能性があります。上記の方法でうまくいかない場合は、おそらくあなたのWidget Classを貼り付けてください。

私のウィジェットクラスには、デフォルトの配列である変数w_argがあることを追加してください。例えば。

var $w_arg = array(
        'order'=> 'ASC'
        );
4
Stephen Harris

あなたの<option>sはvalue=を必要としません、さもなければどんな値も送りません...本質的に今value=''、それは私があなたが見ているものである、ということです。

0
mor7ifer

あなたの<select>value属性もtype="text"属性も持つべきではありません。

0
Geert