ユーザーが表示するカテゴリを選択できるウィジェットを作成しようとしています。以下は私が作成したコードですが、チェックボックスの状態の変更は保存できません。値は、タイトルと選択したカテゴリのリストの 2 つだけです。
function form($instance) {
$instance = (array)$instance;
if( empty($instance['title']) ) $instance['title'] = 'Category';
$selected_categories = (array)$instance['category'];
var_dump($selected_categories);
....
$categories = get_categories( array('exclude'=> 1) );
foreach($categories as $category) : ?>
<div>
<input type="checkbox" name="<?php echo $this->get_field_name('category'); ?>"
value="<?php echo $category->cat_ID; ?>"
<?php echo $category->cat_name; ?>
</div>
<?php endforeach; ?>
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['category'] = $new_instance['category'];
return $instance;
}
var_dump($selected_categories) で変更を観察します。チェックしたチェックボックスの数を無視して、値は常に配列(サイズ= 0)です。
$instance 変数に配列を渡す方法がわかりません。
前もって感謝します。