web-dev-qa-db-fra.com

Que fait cette variable d'instance dans la classe Widgets

Le manque de documentation pour la classe WP_Widget me rend fou. Voici ce que j'ai récupéré du codex:

    public function form($instance){
        ?>

        <label for="<?php echo $this->get_field_id('title'); ?>">Title: 
        <input type="text" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $instance['title']; ?>" id="<?php echo $this->get_field_id('title'); ?>" />
        </label>

        <?php
    }

Quelle est cette variable $instance? Les docs disent que c'est The settings for the particular instance of the widget. Mais alors pourquoi n'est-ce pas simplement une autre propriété de $this. Pourquoi $this->get_field_name('title') semble-t-il savoir quelque chose au sujet d'un titre et soudainement, lorsque nous voulons ce titre, je dois commencer à entrer dans cette variable instance. Qu'est-ce que j'oublie ici.

Pouvez-vous m'expliquer où se trouve le $title, en quoi le $instance est-il différent de $this et pourquoi nous utilisons le titre pour obtenir le nom du champ?

Merci beaucoup!

4
Lucky Luke

$instance contient les données stockées pour cette instance de widget sous forme de tableau. Vous pouvez utiliser le même widget plusieurs fois, et chacun obtient des données différentes.

get_field_name() et get_field_id() renvoie les attributs name/id pour ce widget. Ils sont uniques pour chaque widget, mais ne dépendent pas des données. C’est pourquoi ils ne doivent rien savoir du $instance:

function get_field_name($field_name) {
    return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
}
4
fuxia