2010-09-03 3 views
2

J'ai créé un widget Flickr personnalisé pour Wordpress et configuré avec succès un formulaire d'options permettant aux utilisateurs d'entrer leurs informations Flickr, mais je ne parviens pas à cocher la case pour savoir si elle est cochée ou non . Toute aide serait grandement appréciée! Voici mes fonctions widget(), form(), et update():Enregistrement de la valeur de la case à cocher dans le widget wordpress

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/[email protected]&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); ?> 

Toute aide serait grandement appréciée !!!

+0

Avez-vous donné la case à cocher un nom? Je sais que les cases à cocher non cochées ne seront pas passées en variable dans _POST/_GET. – Steven

+0

Il a un nom attribué. –

Répondre

2

je vous recommande de vérifier les widgets par défaut situés dans: il y a wp-includes/default-widgets.php

3

5 minutes, je suis tombé sur le même problème que vous avec une case à cocher dans mon habitude widget image et en regardant à travers les widgets par défaut comme Hnrch suggéré résolu.

Mon problème a été causé par l'écho d'un mauvais attribut de nom sur mon entrée case à cocher. Il existe une méthode appelée get_field_name() qui génère le nom d'entrée correct. Voici un exemple de mon (maintenant fonctionnelle) case à cocher:

<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 » devrait être 'show_photostream dans votre cas

1

Pas exactement ce que vous cherchez, mais voici comment je sauvé une case à cocher dans METABOX , vous pouvez obtenir quelques indices de ce ...

code html utilisé pour afficher

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; 
} 

Lors de l'enregistrement

update_post_meta($post_id,'_suppress_rtsocial',$_POST['_suppress_rtsocial']); 

Ajouté js pour l'interface admin

function checkbox_helper(){ 
    var ele =jQuery('#_suppress_rtsocial'),value; 
    ele.click(function(){ 
       value = ele.is(':checked')?'yes':'no'; 
       ele.val(value); 
      } 
); 
} 
Questions connexes