it-swarm.com.de

Widget auf bestimmte Seitenleiste beschränken?

Ich habe mehrere "Seitenleisten", aber nicht alle sind gleich groß. Nicht alle Widgets passen in alle Seitenleisten (zum Beispiel habe ich eine "Fußzeilen-Seitenleiste", in der der Client benutzerdefinierte Widgets platzieren kann, aber sie sind breit und passen überhaupt nicht in die "echte" Seitenleiste). Ich möchte einen Hinweis geben, wenn ein Widget in einer Seitenleiste platziert wird, zu der es nicht gehören würde (ändern Sie beispielsweise die Textfarbe der Kopfzeile). Was wäre der beste Weg, dies zu tun?

7
Jan Fabry

Ich habe es mit CSS gelöst, ähnlich meinem Trick, um meine eigenen Widgets hervorzuheben . Die Seitenleisten-Ablagebereiche sind div mit der Klasse widgets-sortable und sie enthalten die id Ihrer Seitenleiste. Ihre Widgets sind div mit der Klasse widget und und id in der Form widget-[global_counter]_[widget_key]-[widget_id]. Sie können diese kombinieren, um richtige oder falsche Kombinationen hervorzuheben.

Zum Beispiel habe ich eine Seitenleiste namens footer, die nur breite Widgets enthalten sollte. Diese Widgets sind erkennbar, da ihre ID -wide- enthält. Ich möchte, dass diese grün und alle anderen rot durchgestrichen sind.

add_action('admin_print_styles-widgets.php', 'print_widget_hint_style');
function print_widget_hint_style()
{
    echo <<<EOF
<style type="text/css">
/* Less specific rule for all widgets */
div.widgets-sortables[id*=-footer] div.widget .widget-title
{
    color: red;
    text-decoration: line-through;
}

/* More specific rule for correct widgets */
div.widgets-sortables[id*=-footer] div.widget[id*=-wide-] .widget-title
{
    color: green;
}
</style>
EOF;
}
3
Jan Fabry

Es gibt einen widget_display_callback-Hook, mit dem Sie das Widget basierend auf der Seitenleiste und dem Widget überschreiben können (bei Unangemessenen wird false zurückgegeben):

http://core.trac.wordpress.org/browser/trunk/wp-includes/widgets.php?rev=15590#L180

4

Ich würde wahrscheinlich meine eigenen Widget-Bereiche definieren, die alle darin enthaltenen Widgets im Admin-Bereich erhalten, und diesen Widget-Bereich nur an einer bestimmten Stelle im Design platzieren.

0
tw2113