'タイトル:', 'type'=>'text', 'default'=>'fukuoka'); $atnd_options['widget_fields']['keyword'] = array('label'=>'キーワード(AND)カンマ区切り:', 'type'=>'text', 'default'=>''); $atnd_options['widget_fields']['keyword_or'] = array('label'=>'キーワード(OR)カンマ区切り:', 'type'=>'text', 'default'=>''); $atnd_options['widget_fields']['count'] = array('label'=>'表示件数:', 'type'=>'text', 'default'=>'5'); $atnd_options['widget_fields']['author_name'] = array('label'=>'主催者を表示:', 'type'=>'checkbox', 'default'=>true); $atnd_options['widget_fields']['update'] = array('label'=>'更新日時を表示:', 'type'=>'checkbox', 'default'=>true); $atnd_options['widget_fields']['linked'] = array('label'=>'ATNDリンク:', 'type'=>'text', 'default'=>'>>'); $atnd_options['widget_fields']['encode_utf8'] = array('label'=>'UTF8 Encode:', 'type'=>'checkbox', 'default'=>false); $atnd_options['prefix'] = 'atnd'; // atnd ログ表示 function atnd_messages($keyword = '', $keyword_or = '', $count = 1, $list = false, $author_name = true, $update = true, $linked = '#', $encode_utf8 = false) { global $atnd_options; include_once(ABSPATH . WPINC . '/rss.php'); $messages = fetch_rss('http://api.atnd.org/events/?keyword='.$keyword.'&keyword_or='.$keyword_or.'&count='.$count.'&format=atom'); //echo "
";
//var_dump($messages);
//echo "";
if ($list) echo '";
//var_dump ($item);
//echo "";
atnd_messages(
$item['keyword'],
$item['keyword_or'],
$item['count'],
true,
$item['author_name'],
$item['update'],
$item['linked'],
$item['encode_utf8']
);
echo $after_widget;
}
// atnd ウィジットコントロール画面
function widget_atnd_control($number)
{
global $atnd_options;
$options = get_option('widget_atnd');
if ( isset($_POST['atnd-submit']) ) {
foreach($atnd_options['widget_fields'] as $key => $field) {
$options[$number][$key] = $field['default'];
$field_name = sprintf('%s_%s_%s', $atnd_options['prefix'], $key, $number);
if ($field['type'] == 'text') {
$options[$number][$key] = strip_tags(stripslashes($_POST[$field_name]));
} elseif ($field['type'] == 'checkbox') {
$options[$number][$key] = isset($_POST[$field_name]);
}
}
update_option('widget_atnd', $options);
}
foreach($atnd_options['widget_fields'] as $key => $field) {
$field_name = sprintf('%s_%s_%s', $atnd_options['prefix'], $key, $number);
$field_checked = '';
if ($field['type'] == 'text') {
$field_value = htmlspecialchars($options[$number][$key], ENT_QUOTES);
} elseif ($field['type'] == 'checkbox') {
$field_value = 1;
if (! empty($options[$number][$key])) {
$field_checked = 'checked="checked"';
}
}
printf('
',
$field_name,
__($field['label']),
$field_name,
$field_name,
$field['type'],
$field_value,
$field['type'],
$field_checked
);
}
echo '';
}
// atnd ウィジットセットアップ
function widget_atnd_setup()
{
$options = $newoptions = get_option('widget_atnd');
if ( isset($_POST['atnd-number-submit']) ) {
$number = (int) $_POST['atnd-number'];
$newoptions['number'] = $number;
}
if ( $options != $newoptions ) {
update_option('widget_atnd', $newoptions);
widget_atnd_register();
}
}
// atnd ウィジット登録
function widget_atnd_register()
{
$options = get_option('widget_atnd');
$dims = array('width' => 350, 'height' => 300);
$class = array('classname' => 'widget_atnd');
for ($i = 1; $i <= 9; $i++) {
$name = sprintf(__('atnd #%d'), $i);
$id = "atnd-$i"; // Never never never translate an id
wp_register_sidebar_widget($id, $name, $i <= $options['number'] ? 'widget_atnd' : /* 未登録 */ '', $class, $i);
wp_register_widget_control($id, $name, $i <= $options['number'] ? 'widget_atnd_control' : /* 未登録 */ '', $dims, $i);
}
add_action('sidebar_admin_setup', 'widget_atnd_setup');
}
widget_atnd_register();
}
// widget_atnd_init をウィジットに登録
add_action('widgets_init', 'widget_atnd_init');
?>