Wie kann ich auf Widget-Daten von einem externen Widget zugreifen?

Ich versuche, die Einstellungen eines Widgets außerhalb des Widget-Codes aufzurufen.

Der Name des Widgets lautet: category_grid und der Name des is: widget_categories .

Ich habe versucht, den folgenden Code, der in einer Antwort auf eine Frage auf einer anderen Website vorgeschlagen wurde, aber es gibt nichts zurück:

  

Solutions Collecting From Web of "Wie kann ich auf Widget-Daten von einem externen Widget zugreifen?"

Erstens gibt es keine Daten eines Widgets. Dies liegt daran, dass ein Widget an mehreren Stellen einer Site enthalten sein kann. Die Daten gehören also nicht zum Widget, sondern zur Instanz dieses Widgets. Aus diesem Grund erhält jedes Widget eine ID. Wenn Sie wissen möchten, wie die ID einer Widget-Instanz lautet, können Sie diesen Code verwenden, um sie im Backend anzuzeigen.

 add_action('in_widget_form', 'wpse240327_get_widget_id'); function wpse240327_get_widget_id($widget_instance) { if ($widget_instance->number=="__i__"){ echo '

' . __('Save the widget to get its ID','textdomain') . '

'; } else { echo '

' . __('The widget ID is:','textdomain') . ' ' . $widget_instance->id . '

'; } }

Beachten Sie, dass sich die ID möglicherweise geändert hat, wenn Sie das Widget aus der Seitenleiste entfernen und es später erneut platzieren. In jedem Fall benötigen Sie diese ID, um eine bestimmte Widget-Instanz zu identifizieren. Die ID besteht aus zwei Komponenten: einem Namen und einer Nummer, die Sie beide benötigen:

 my_widget_name_777 

Lass uns das teilen:

 $widget_name = 'my_widget_name'; $widget_instance = '777'; 

Jetzt müssen Sie auf das Array zugreifen, das alle Daten speichert. Jedes Widget hat seine eigene Option, die ein Array aller Instanzen dieses bestimmten Widgets enthält. Du erreichst es so:

 $widget_instances = get_option('widget_' . $widget_name); 

Dadurch erhalten Sie ein Array mit Instanzen, in denen die Schlüssel durch die Nummer gebildet werden. Sie erhalten Ihre Daten also unter:

 $data = $widget_instances[$widget_instance];