Title: WP_Widget::__construct
Published: April 25, 2014
Last modified: August 20, 2026

---

# WP_Widget::__construct( string $id_base, string $name, array $widget_options = array(), array $control_options = array() )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#wp--skip-link--target)

PHP5 constructor.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#parameters)󠁿

 `$id_base`stringrequired

Base ID for the widget, lowercase and unique. If left empty, a portion of the widget’s
PHP class name will be used. Has to be unique.

`$name`stringrequired

Name for the widget displayed on the configuration page.

`$widget_options`arrayoptional

Widget options. See [wp_register_sidebar_widget()](https://developer.wordpress.org/reference/functions/wp_register_sidebar_widget/)
for information on accepted arguments.

Default:`array()`

`$control_options`arrayoptional

Widget control options. See [wp_register_widget_control()](https://developer.wordpress.org/reference/functions/wp_register_widget_control/)
for information on accepted arguments.

Default:`array()`

## 󠀁[Source](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#source)󠁿

    ```php
    public function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) {
    	if ( ! empty( $id_base ) ) {
    		$id_base = strtolower( $id_base );
    	} else {
    		$id_base = preg_replace( '/(wp_)?widget_/', '', strtolower( get_class( $this ) ) );
    	}

    	$this->id_base         = $id_base;
    	$this->name            = $name;
    	$this->option_name     = 'widget_' . $this->id_base;
    	$this->widget_options  = wp_parse_args(
    		$widget_options,
    		array(
    			'classname'                   => str_replace( '\\', '_', $this->option_name ),
    			'customize_selective_refresh' => false,
    		)
    	);
    	$this->control_options = wp_parse_args( $control_options, array( 'id_base' => $this->id_base ) );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-widget.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/class-wp-widget.php#L163)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/class-wp-widget.php#L163-L181)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_parse_args()](https://developer.wordpress.org/reference/functions/wp_parse_args/)`wp-includes/functions.php` |

Merges user defined arguments into defaults array.

  |

| Used by | Description | 
| [WP_Widget_Block::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_block/__construct/)`wp-includes/widgets/class-wp-widget-block.php` |

Sets up a new Block widget instance.

  | 
| [WP_Widget_Custom_HTML::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_custom_html/__construct/)`wp-includes/widgets/class-wp-widget-custom-html.php` |

Sets up a new Custom HTML widget instance.

  | 
| [WP_Widget_Media::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_media/__construct/)`wp-includes/widgets/class-wp-widget-media.php` |

Constructor.

  | 
| [WP_Nav_Menu_Widget::__construct()](https://developer.wordpress.org/reference/classes/wp_nav_menu_widget/__construct/)`wp-includes/widgets/class-wp-nav-menu-widget.php` |

Sets up a new Navigation Menu widget instance.

  | 
| [WP_Widget_RSS::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_rss/__construct/)`wp-includes/widgets/class-wp-widget-rss.php` |

Sets up a new RSS widget instance.

  | 
| [WP_Widget_Tag_Cloud::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_tag_cloud/__construct/)`wp-includes/widgets/class-wp-widget-tag-cloud.php` |

Sets up a new Tag Cloud widget instance.

  | 
| [WP_Widget_Recent_Comments::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_recent_comments/__construct/)`wp-includes/widgets/class-wp-widget-recent-comments.php` |

Sets up a new Recent Comments widget instance.

  | 
| [WP_Widget_Recent_Posts::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_recent_posts/__construct/)`wp-includes/widgets/class-wp-widget-recent-posts.php` |

Sets up a new Recent Posts widget instance.

  | 
| [WP_Widget_Calendar::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_calendar/__construct/)`wp-includes/widgets/class-wp-widget-calendar.php` |

Sets up a new Calendar widget instance.

  | 
| [WP_Widget_Categories::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_categories/__construct/)`wp-includes/widgets/class-wp-widget-categories.php` |

Sets up a new Categories widget instance.

  | 
| [WP_Widget_Text::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_text/__construct/)`wp-includes/widgets/class-wp-widget-text.php` |

Sets up a new Text widget instance.

  | 
| [WP_Widget_Archives::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_archives/__construct/)`wp-includes/widgets/class-wp-widget-archives.php` |

Sets up a new Archives widget instance.

  | 
| [WP_Widget_Meta::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_meta/__construct/)`wp-includes/widgets/class-wp-widget-meta.php` |

Sets up a new Meta widget instance.

  | 
| [WP_Widget_Links::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_links/__construct/)`wp-includes/widgets/class-wp-widget-links.php` |

Sets up a new Links widget instance.

  | 
| [WP_Widget_Pages::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_pages/__construct/)`wp-includes/widgets/class-wp-widget-pages.php` |

Sets up a new Pages widget instance.

  | 
| [WP_Widget_Search::__construct()](https://developer.wordpress.org/reference/classes/wp_widget_search/__construct/)`wp-includes/widgets/class-wp-widget-search.php` |

Sets up a new Search widget instance.

  | 
| [WP_Widget::WP_Widget()](https://developer.wordpress.org/reference/classes/wp_widget/wp_widget/)`wp-includes/class-wp-widget.php` |

PHP4 constructor.

  |

[Show 12 more](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/WP_Widget/__construct/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.8.0](https://developer.wordpress.org/reference/since/2.8.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_widget%2F__construct%2F)
before being able to contribute a note or feedback.