Überprüfen Sie, zu welcher registrierten Sidebar ein Widget hinzugefügt wurde

Ich habe 2 registrierte Seitenleisten in meinem Thema für Produkte und einen für Blog.

Was ich versuche zu tun ist, wenn mein “Category” -Widget zur Produkt Sidebar hinzugefügt wird, wird die Taxonomie automatisch auf “product_cats” gesetzt und wenn die Taxonomie der “Blog Sidebar” hinzugefügt wird, muss sie auf “category” gesetzt werden. Dadurch kann mein Widget im Backend aktualisieren, welche Kategorien es im Dropdown-Menü anzeigt.

Ich habe die Datei wp-includes / widgets.php nach einer Methode oder Eigenschaft durchsucht , die die ID oder den Namen der übergeordneten Sidebar des Widgets enthält, aber anscheinend keine Möglichkeit gefunden, dies zu tun.

Wenn ich den Namen oder die ID der Parent Sidebar bekommen kann, würde ich etwas in der Form meines Widgets machen:

public function form( $instance ) { $parent = getParentSidebarID($this); // How do you do this! switch ($parent) { case 'product-sidebar': $tax = 'product_cat'; break; case 'blog-sidebar': $tax = 'category'; break; default: $tax = ''; break; } } 

Ist das möglich?

Solutions Collecting From Web of "Überprüfen Sie, zu welcher registrierten Sidebar ein Widget hinzugefügt wurde"

Es gibt keine Standardmethode, dies in der Form () -Methode zu tun. Hier ist eine function, um es zu tun:

 function wp158055_get_sidebar_id( $widget ) { foreach ( wp_get_sidebars_widgets() as $sidebar_id => $widget_ids ) { if ( array_search( $widget->id, $widget_ids ) !== false ) return $sidebar_id; } return false; } 

Und ruf mit $this . Hinweis von der widget () Methode können Sie $args['id'] wie in dieser Antwort erwähnt verwenden .