Сохранение значения флажка в проблеме виджетов Wordpress

69
1

Я создал пользовательский Flickr Widget для 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); ?>


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

спросил(а) 2010-09-03T08:10:00+04:00 10 лет, 1 месяц назад
1
Решение
81

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

ответил(а) 2012-11-17T21:20:00+04:00 7 лет, 11 месяцев назад
58

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


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

ответил(а) 2014-01-03T16:10:00+04:00 6 лет, 9 месяцев назад
57

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

ответил(а) 2011-01-27T16:18:00+03:00 9 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема