Ich habe ein einfaches benutzerdefiniertes Widget, das nach seiner Breite fragt (das später im Frontend verwendet wird). Das Breitenfeld ist eine Auswahl-Dropdown-Liste, sodass ein Benutzer vordefinierte Optionen hat.
Ich werde viele Instanzen meines Widgets haben, jede wird ihre eigene Breite einrichten.
Jetzt habe ich in meinem Widget-Code den folgenden Code:
echo $before_widget;
was in ... endet:
<div class="widget my" id="my-widget-1"></div>
Was ich tun möchte, ist irgendwie $before_widget
meine eigene Klasse einzuhängen und hinzuzufügen (die angegebene Breite aus der Auswahl-Dropdown-Liste). Ich möchte also das folgende Markup:
<div class="widget my col480" id="my-widget-3"></div>
Und wenn keine Klasse angegeben ist, möchte ich hinzufügen class="col480"
.
Wie erreiche ich das?
Danke für die Hilfe! Dasha
quelle
Sie können
dynamic_sidebar_params
Filter Hook verwenden, um Ihr Widget zu finden und Ihre Klassen hinzuzufügen:quelle
get_option('widget-name')
$before_widget
Am Ende habe ich die Zeichenfolge gehackt. Ihre Antwort hat mich dazu gebracht richtige Spur zu entdecken, dass$before_widget
eine Zeichenfolge ist.Eine andere Möglichkeit, eine Klasse für ein benutzerdefiniertes Widget hinzuzufügen, besteht darin , den Schlüssel ' classname ' Ihrer Konstruktfunktion wie folgt zu verwenden :
Und stellen Sie sicher, dass Sie in Ihrem Design die Standardeinstellung ' before_widget ' verwenden. Wenn Sie diese
register_sidebar()
in function.php verwenden, gehen Sie folgendermaßen vor:Dann haben Sie auf jeder Instanz Ihres Widgets die Klasse 'Widget my-class-name' wie folgt:
Sie können auch zuerst den übergeordneten Konstruktor aufrufen und dann den gewünschten Klassennamen anhängen:
quelle
Fügen Sie zunächst eine benutzerdefinierte Platzhalterklasse im Konstruktor hinzu
Ersetzen Sie es dann durch die Klasse (n) Ihrer Wahl, basierend auf den Widget-Optionen wie diesen
Sie finden die Details mit Beispiel unter http://satishgandham.com/2017/03/adding-dynamic-classes-custom-wordpress-widgets/
quelle
Sie können diesen Filter ausprobieren:
quelle