it-swarm.com.de

Das Widget für benutzerdefinierte zufällige Anführungszeichen wird ab, wenn es in mehreren Seitenleisten verwendet wird

Ich habe ein benutzerdefiniertes Widget erstellt und es in functions.php platziert. Sie können das Widget hier sehen:

http://Pastebin.com/3uWpeaFx

(Ich habe auch ein ähnliches Widget erstellt, das ein zufälliges Bild erfasst. Es ist im Pastebin enthalten.)

Mit dem Widget können Benutzer bis zu zehn Text-/HTML-Blöcke einfügen, diese in einem Array in JS speichern und mit JS nach dem Zufallsprinzip anzeigen.

Dies sind supereinfache Widgets, die auf dem Standard-Text-Widget basieren, das mit WP geliefert wird. (Ich bin kein PHP Experte, daher gibt es wahrscheinlich eine elegantere Möglichkeit, sie zu erstellen, aber sie sind einfach zu verwenden, was der Client benötigt.)

Das Problem, das ich habe, ist das:

Wenn Sie mehr als ein Zufallstext-Widget verwenden, werden auch auf mehreren Seitenleisten, die auf verschiedenen Seiten angezeigt werden, alle außer dem Original als "undefiniert" zurückgegeben.

Der von Ihnen in das Feld eingegebene Text wird anscheinend ordnungsgemäß gespeichert und kann über die WP -Admin-Oberfläche bearbeitet werden. Wenn es jedoch darum geht, es im Front-End anzuzeigen, wird der Text nicht richtig wiedergegeben.

Ich bin sicher, es ist etwas Einfaches, das mir im Widget fehlt ... irgendwelche Hinweise?

Vielen Dank!

1
bigsweater

Kein übergeordnetes Element erforderlich: Der Unterschied zwischen einem nicht funktionierenden Widget und einem funktionierenden Widget ist folgender:

$text1 = apply_filters( 'widget_text1', $instance['text1'], $instance );

vs:

$text1 = apply_filters( 'widget_text1', empty($instance['text1']) ? '' : $instance['text1'], $instance, $this->id_base);

Ich erkannte, dass mehrere Zufallstext-Widgets auf derselben Seite platziert wurden, deren Titel funktionierten, der Textinhalt jedoch nicht. Also habe ich die Eigenschaften (leer ($ instance ... etc.)) Aus dem Titel in jede der Textinstanzen kopiert.

Die Widgets selbst wurden instanziiert, die Textbereiche jedoch nicht. Zumindest glaube ich, dass das passiert ist. Ich weiß nicht genug PHP, um es genau zu wissen.

Wenn jemand weiß, warum die zweite Version funktioniert und die erste nicht, würde ich mich freuen, das zu hören. :)

1
bigsweater