Сохранение значения флажка при выпуске виджета WordPress - PullRequest
2 голосов
/ 03 сентября 2010

Я создал пользовательский виджет Flickr для Wordpress и успешно настроил форму параметров, чтобы пользователи могли вводить свои данные 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); ?>

Любая помощь будет принята с благодарностью !!!

Ответы [ 3 ]

3 голосов
/ 17 ноября 2012

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' в вашем случае

1 голос
/ 03 января 2014

Не совсем то, что вы ищете, но вот как я сохранил флажок в метабоксе, вы можете получить некоторую подсказку из этого ...

Код, используемый для отображения 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);
            }
);
}
1 голос
/ 27 января 2011

Рекомендую проверить виджеты по умолчанию, расположенные в: wp-includes/default-widgets.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...