Umschaltoption in Sidebar-Widgets

Ich möchte die Umschaltoption in meinen Sidebar-Widgets verwenden. Aber meine Sidebar-Widgets generieren keine eindeutige ID. Dies ist mein Register Sidebar-Code.

register_sidebar(array( 'name' => 'Main Sidebar', 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '
', 'after_title' => '
' )

So werde ich ausgegeben

 
Widget Title
Widget content

Ich meine %1$s funktioniert nicht in after_title . Ich möchte eine eindeutige ID verwenden. Kann mir jemand Tipps geben, damit es funktioniert? Vielen Dank

Solutions Collecting From Web of "Umschaltoption in Sidebar-Widgets"

Der after_title durchläuft keine Transformationen. Tatsächlich macht nur das before_widget :

http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/widgets.php#L876

Etwas tiefer kann man jedoch sehen, dass $params = apply_filters( 'dynamic_sidebar_params', $params ); Es gibt einen Filter, den Sie haken können, um Ihre eigene Filterung durchzuführen.

 add_filter( 'dynamic_sidebar_params', 'wpse_45418_change_after_title' ); function wpse_45418_change_after_title( $params ) { $id = $params[0]['widget_id']; if ( $id != 'mywidget' ) return $params; global $wp_registered_widgets; foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) { if ( is_string($cn) ) $classname_ .= '_' . $cn; elseif ( is_object($cn) ) $classname_ .= '_' . get_class($cn); } $params[0]['after_title'] = sprintf($params[0]['after_title'], $id, $classname ); return $params; } 

Dies ist die allgemeine Antwort darauf, warum Ihre IDs nicht gerendert werden. after_title aus diesem Beispiel Ihre eigenen eindeutigen IDs im Schlüssel after_title zu generieren, müssten Sie etwas Ähnliches tun, jedoch eindeutige IDs bereitstellen:

 add_filter( 'dynamic_sidebar_params', 'wpse_45418_change_after_title' ); function wpse_45418_change_after_title( $params ) { $id = $params[0]['widget_id']; if ( $id != 'mywidget' ) return $params; $url = esc_url( 'http://some-url-you-need.com' ); $uidcollapse = $id.'-unique-id'; $uidboxdiv = $id.'-another-unique-id'; // 
$params[0]['after_title'] = sprintf($params[0]['after_title'], $url, $classname, $uidcollapes, $uidboxdiv ); return $params; }

Hinweis: Die ID muss eindeutig sein und Sie versuchen, die ID auf 2 verschiedene Divs zu setzen.

Jetzt funktionieren die Attribute ID https://wordpress.stackexchange.com/questions/45418/toggle-option-in-sidebar-widgets/%1$s und class %2$s nur im Argument before_widget , soweit ich weiß, aber Sie können sie verwenden, um Widgets basierend auf, aber mit etwas mehr als nur data-toggle="collapse" before_widget .