【问题标题】:Saving checkbox value in wordpress widget issue在 wordpress 小部件问题中保存复选框值
【发布时间】:2010-09-03 05:10:35
【问题描述】:

我为 Wordpress 创建了一个自定义 Flickr 小部件,并成功设置了一个选项表单供用户输入他们的 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); ?>

任何帮助将不胜感激!!!

【问题讨论】:

  • 你给复选框起名字了吗?我知道未选中的复选框不会在 _POST / _GET 中作为变量传递。
  • 它确实有一个名称。

标签: php wordpress widget


【解决方案1】:

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); ?> />&nbsp;

在您的情况下,'linktarget' 应该是 'show_photostream'

【讨论】:

    【解决方案2】:

    我建议您检查位于以下位置的默认小部件:wp-includes/default-widgets.php

    【讨论】:

      【解决方案3】:

      不完全是您要查找的内容,但这是我在元框中保存复选框的方式,您可能会从中得到一些提示...

      用于显示 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);
                  }
      );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        • 2011-11-23
        相关资源
        最近更新 更多