it-swarm.com.de

So sparen Sie WP Widget-Instanzen und -Optionen

Ich bin etwas verwirrt, obwohl ich die gesamte API gelesen und stundenlang gesucht habe.

Wenn ich mein Plugin aktiviere, füge ich der Optionsdatenbank einige Werte hinzu, z.

add_option('code','24');

Wie aktualisiere ich diesen Wert oder verwende ihn im Widget? Ich sehe jetzt nur "Instanzen", wie im Beispiel auf dieser Seite:

http://wpcoderz.com/creating-a-multi-instance-widget-with-wordpress-2-8/

Ich verstehe nicht wirklich, was Instanzen sind, die WP -Dokumentation bietet nicht viele Erklärungen dazu.

1
SloBros

Instanz

'instance' ist wirklich wie in "object oriented programming instance": Sie haben eine bestimmte Klasse (das ist ein bestimmtes Widget, das Sie als Klasse codiert haben) und sobald Sie es auf einer Site verwenden, erstellen Sie eine bestimmte Instanz davon. Sie erstellen ein Objekt, das Sie manipulieren können, ABER Sie können eine Instanz haben, die zB den Wert "hello" als Header hat, und eine andere, die "hello world" als Header hat (gleiche Klasse, verschiedene Instanzen) (also 2 Widgets derselben Klasse, aber mit verschiedene Eigenschaften).

Werte in diesen Widgets

Wenn Sie Werte haben, die für eine Instanz spezifisch sind , würden Sie sie im Widget-Klassencode spezifizieren, so dass Sie z. Zeigen Sie sie dem Endbenutzer in einem Formular zur Bearbeitung. Mach dir keine Sorgen über das Speichern in der Datenbank, die Widget-Klasse im Hintergrund kümmert sich darum.

Wenn Sie Werte haben, die für alle Instanzen dieses Widgets gleich sind, können Sie dies möglicherweise aus einer von Ihnen festgelegten Option abrufen, die jedoch dem Benutzer in einem Formular niemals angezeigt wird.

(Wie Sie mit add_option wissen, fügen Sie der Tabelle wp_options eine neue Option hinzu.)

bei Widgets gibt es eine Zwischenebene (die Widget-Factory), die die Widget-Optionen für Sie in dieser wp_options-Tabelle speichert, sodass Sie diese Optionen und Aktualisierungen für diese Optionen nicht manuell hinzufügen müssen, um diese offenen wp_options anzuzeigen und den Inhalt durchzugehen dieser Tabelle.

wenn Sie dennoch Zugriff auf Ihren eigenen Optionswert haben möchten, sollten Sie den regulären Optionscode in den Widget-Code einfügen (da diese Einstellung dann im Widget-Bildschirm geändert werden kann, anstatt beispielsweise in Ihrem eigenen Plugin-Bildschirm).

Wenn es sich um einen Wert handelt, den Sie direkt verwenden möchten, ist es möglicherweise einfacher, keinen eigenen Optionswert zu verwenden, sondern nur den im Widget.

Wenn Sie es verwenden, um einen anderen Wert zu manipulieren, können Sie stattdessen besser einen Filter hinzufügen und dann in diesen Filter einbinden, um den im Widget verwendeten Wert zu manipulieren (im Gegensatz zum direkten Lesen des Optionswerts).

Also konstruierst du zuerst ein Widget, z.

    /**
     * Constructor
     */
    function __construct()
{
    $widget_ops = array('classname' => 'widget_icons_latest', 'description'
        => __('Shows your latest ♥ WP-Favicons which corresponds (after some time caching) '.
        'with the latest outgoing links you published on your website. You can style '.
        'the icons by using the stylesheet in the text widget settings under the ♥ WP-favicons '.
        'Context settings.'));
    $control_ops = array('width' => 200, 'height' => 350);
    parent::__construct('WPFaviconsLatest', __('♥ Show Latest WP-Favicons'), $widget_ops, $control_ops);
}

Anschließend können Sie in der Widget-Methode Anfangswerte festlegen, z. Wenn Sie sich $ title ansehen, wird zunächst angezeigt, ob DIESE Instanz des Widgets (dh das bestimmte Widget dieses Typs, das in die Widget-Leiste gezogen wurde) bereits einen Titel festgelegt hat. Andernfalls wird ein Standardwert zugewiesen. WENN Sie Ihren Standardwert aus einer in der Datenbank gespeicherten Option verwenden möchten, können Sie den festen Wert durch einen Wert ersetzen, den Sie aus der Optionstabelle gelesen haben. Warum sollten Sie dies tun? Sie sehen auch den Wert "25", der ziemlich hart codiert ist. Vielleicht ist dies ein guter Wert, um ihn aus einer Datenbankoptionstabelle abzurufen, die Sie selbst in einem Plugin-Administratorbildschirm festgelegt haben (ersetzen Sie also 25 durch get option).

    /**
     * (non-PHPdoc)
     * @see WP_Widget::widget()
     */
    function widget($args, $instance) {
        extract( $args );
        echo $before_widget;
        $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
        $amount = empty($instance['amount']) ? 25 : $instance['amount'];
        $instance['text'] = $this->specificOutput($amount, false);
        $text = apply_filters( 'widget_text', $instance['text'], $instance );
        if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
        <div class="widget_icons_latest"><?php echo $text; ?></div>
        <div class="widget_icons_latest">by <a href="http://wordpress.org/extend/plugins/wp-favicons/">WP-Favicons</a></div>
        <?php
        echo $after_widget;
    }

Die Aktualisierungsmethode aktualisiert nur die Werte, wenn sie geändert wurden. Die Formularmethode zeigt das Formular auf dem Administratorbildschirm des Widgets an.

5
edelwater