我为Wordpress创建了一个自定义的Flickr Widget并成功设置了一个选项表单供用户输入他们的Flickr信息,但我无法获取表单中的复选框以保存是否已选中。任何帮助将不胜感激!这是我的widget(),form()和update()函数:
function widget($args, $instance) {
extract($args);
$title = apply_filters('widget_title', $instance['title']);
$displaynum = $instance['displaynum'];
$flickrid = $instance['flickrname'];
$num = 6;
$feed = new SimplePie($instance['feed']);
$feed->handle_content_type();
$photostream = $instance['show_photostream'];
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title'] );
$instance['displaynum'] = strip_tags($new_instance['displaynum'] );
$instance['feed'] = $new_instance['feed'];
$instance['flickrname'] = $new_instance['flickrname'];
$instance['show_photostream'] = (bool) $new_instance['show_photostream'];
return $instance;
}
function form($instance) {
$defaults = array (
'title' => 'My Recent Flickr Uploads',
'displaynum' => 6,
'feed' => 'http://api.flickr.com/services/feeds/photos_public.gne?id=33927859@N06&lang=en-us&format=rss_200',
'flickrname' => 'rastajellyfish',
'show_photostream' => isset( $instance['show_photostream'] ) ? (bool) $instance['show_photostream'] : false
);
$instance = wp_parse_args( (array) $instance, $defaults); ?>
任何帮助都将非常感谢!!!
答案 0 :(得分:3)
5分钟前,我在我的自定义图像小部件中遇到了一个复选框,遇到了同样的问题,并查看默认小部件,因为Hnrch建议解决它。
我的问题是由于在我的复选框输入上回显了错误的名称属性。有一个名为get_field_name()
的方法,它将输出正确的输入名称。这是我的(现在功能性)复选框的示例:
<input id="<?php echo $this->get_field_id('linktarget'); ?>" name="<?php echo $this->get_field_name('linktarget'); ?>" type="checkbox" <?php checked(isset($instance['linktarget']) ? $instance['linktarget'] : 0); ?> />
在您的情况下,'linktarget'应为'show_photostream'
答案 1 :(得分:1)
我建议您查看位于wp-includes/default-widgets.php
答案 2 :(得分:1)
不完全是你想要的,但这是我在metabox中保存一个复选框的方式,你可能会从中得到一些暗示......
用于显示html的代码
function html_rtsocial_metabox()
{
global $post;
$custom = get_post_custom($post->ID);
$suppress = $custom['_suppress_rtsocial'][0];
$checked = ($suppress=='yes')?'checked':'';
$value = ($suppress=='yes')?'yes':'no';
$html = '<br><input type="checkbox" name="_suppress_rtsocial" value="'.$value.'" '.$checked.' id="_suppress_rtsocial" /> Hide Social Icons ???';
$html .= '<br/><br/>';
echo $html;
}
保存时
update_post_meta($post_id,'_suppress_rtsocial',$_POST['_suppress_rtsocial']);
为管理界面添加了js
function checkbox_helper(){
var ele =jQuery('#_suppress_rtsocial'),value;
ele.click(function(){
value = ele.is(':checked')?'yes':'no';
ele.val(value);
}
);
}