Criar variável da instância do widget

É possível retornar uma instância de widget em uma variável ou matriz? Eu estou pensando em algo ao longo das linhas de $widget['title'] , $widget['content'] etc.

Tentei inspecionar a variável global $wp_registered_widgets , mas isso só parece conter informações relevantes para renderizar o widget e não o próprio conteúdo do widget. Também sou capaz de recuperar o widget renderizado usando

 ob_start(); dynamic_sidebar('widgetarea'); $sidebar = ob_get_contents(); ob_end_clean(); 

O que eu suponho que eu poderia analisar em uma série de nós dom com jQuery método parseHTML, no entanto, isso parece ser uma maneira muito desordenada de fazer isso e eu me pergunto se alguém poderia sugerir uma maneira mais elegante?

Solutions Collecting From Web of "Criar variável da instância do widget"

Onde estão armazenadas as configurações de widgets?

As configurações do widget são armazenadas na tabela wp_options . Você pode recuperá-lo com

 print_r( get_option( 'widget_x' ) ); 

onde x é o parâmetro de input $id_base do construtor da class WP_Widget. Se $id_base estiver vazio, então ele usa o nome da class do widget em minúsculas, sem os prefixos: wp_widget ou widget_ .

Aqui está um exemplo:

 class WP_Widget_Categories extends WP_Widget { function __construct() { $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories." ) ); parent::__construct('categories', __('Categories'), $widget_ops); } 

Você pode ver como o nome da opção correspondente é criado, aqui no WP_Widget class WP_Widget :

 function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) { $this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base); $this->name = $name; $this->option_name = 'widget_' . $this->id_base; $this->widget_options = wp_parse_args( $widget_options, array('classname' => $this->option_name) ); $this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) ); } 

onde o método de configurações de salvar é:

  function save_settings($settings) { $settings['_multiwidget'] = 1; update_option( $this->option_name, $settings ); } 

Exemplo:

 Widget class name | Option name ------------------------------------------ WP_Widget_Text | widget_text WP_Widget_Archives | widget_archives WP_Widget_Calendar | widget_calendar WP_Widget_Search | widget_search WP_Widget_Tag_Cloud | widget_tag_cloud WP_Widget_Categories | widget_categories WP_Widget_Recent_Posts | widget_recent-posts My_Widget | widget_my_widget ... etc 

Para widgets múltiplos, o valor da opção é uma matriz com números de instância como chaves de matriz.

Exemplo: widgets de texto

Para recuperar todos os dados salvos dos widgets de texto, podemos usar:

 print_r( get_option( 'widget_text' ) ); 

e obtenha, por exemplo, a seguinte saída:

 Array( [1] => Array ( [title] => Bacon Ipsum [text] => Bacon ipsum dolor sit amet t-bone shankle landjaeger, turkey meatloaf shank swine jowl jerky doner kielbasa salami ham. [filter] => ) [3] => Array ( [title] => Lorem Ipsum [text] => Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. [filter] => ) [_multiwidget] => 1 ) 

Eu espero que isso ajude.