Question

J'ai une configuration comme

function form($instance) {
    $defaults = array(
        'title' => 'Recent Products',
        'number_products' => 3
    );
    $instance = wp_parse_args($instance, $defaults);

mais mon titre est ok, mais toujours number_products ne montre pas. i debuged dans NetBeans et a constaté que la forme () est exécuté 2 fois et 1ère fois, les variables ressemblent

$instance = array(0)
// after wp_parse_args, 
$instance = array('title' => 'Recent Products', 'number_products' => 3);

le 2 course de wp_parse_args, je ne sais pas pourquoi il court la 2ème fois,

$instance = array('title' => 'Recent Products', 'number_products' => null);
// after wp_parse_args
$instance = array('title' => 'Recent Products', 'number_products' => null);

Je ne sais pas vraiment ce qu'il se passe ... peut some1 Enlighten moi?

Était-ce utile?

La solution

i a finalement trouvé la réponse, le fait pas un problème avec le code i posté. son dans la fonction de update(). J'ai un code de validation

function update($new_instance, $old_instance) {
    $instance['title'] = esc_attr(strip_tags($new_instance['title']));
    if (is_int($new_instance['number_products'])) {
        if ($new_instance['number_products'] > 0)
            $instance['number_products'] = $new_instance['number_products'];
        else
            $instance['number_products'] = 1;
    } else {
        $instance['number_products'] = $old_instance['number_product'];
    }

    return $instance;
}

le problème est à 2 endroits. Je devrais utiliser is_numeric sur is_int , la raison est

  

Pour tester si une variable est un nombre ou un   chaîne numérique (par exemple, en entrée de formulaire,   qui est toujours une chaîne), vous devez   utiliser is_numeric ().

puis, dans l'autre, $old_instance['number_product'] doit avoir être au pluriel $old_instance['number_products']

Autres conseils

Je ne suis pas sûr de deux pistes soit. Si vous aviez essayé le dumping juste fonction à l'intérieur du contenu au lieu de débogage? Quelque chose comme ceci:

function form( $instance ) {

    var_dump( $instance );

    $defaults = array(
        'title' => 'Recent Products',
        'number_products' => 3
    );
    $instance = wp_parse_args($instance, $defaults);

    var_dump( $instance );
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top