The register_widget_control() WordPress PHP function registers a widget control callback for customizing options.
Usage
register_widget_control($name, $control_callback, $width, $height, $params);
Parameters
- $name (int|string)– Required. Sidebar ID.
- $control_callback (callable)– Required. Widget control callback to display and process the form.
- $width (int)– Optional. Widget width. Default: ”.
- $height (int)– Optional. Widget height. Default: ”.
- $params (mixed)– Required. Widget parameters.
More information
See WordPress Developer Resources: register_widget_control()
Examples
Register a simple text widget control
This example registers a simple text widget control with a form to update the widget title.
function my_text_widget_control($widget_args) {
  // Retrieve the widget options
  $options = get_option('my_text_widget_options');
  // Check if the form was submitted
  if (isset($_POST['my-text-widget-submit'])) {
    // Update the widget title
    $options['title'] = strip_tags(stripslashes($_POST['my-text-widget-title']));
    update_option('my_text_widget_options', $options);
  }
  // Display the widget control form
  echo '<p><label for="my-text-widget-title">Title: <input type="text" id="my-text-widget-title" name="my-text-widget-title" value="' . htmlspecialchars($options['title'], ENT_QUOTES) . '" /></label></p>';
  echo '<input type="hidden" name="my-text-widget-submit" id="my-text-widget-submit" value="1" />';
}
register_widget_control('My Text Widget', 'my_text_widget_control');
Register a custom image widget control
This example registers a custom image widget control with a form to update the image URL and caption.
function my_image_widget_control($widget_args) {
  // Retrieve the widget options
  $options = get_option('my_image_widget_options');
  // Check if the form was submitted
  if (isset($_POST['my-image-widget-submit'])) {
    // Update the image URL and caption
    $options['url'] = esc_url_raw($_POST['my-image-widget-url']);
    $options['caption'] = sanitize_text_field($_POST['my-image-widget-caption']);
    update_option('my_image_widget_options', $options);
  }
  // Display the widget control form
  echo '<p><label for="my-image-widget-url">Image URL: <input type="url" id="my-image-widget-url" name="my-image-widget-url" value="' . esc_attr($options['url']) . '" /></label></p>';
  echo '<p><label for="my-image-widget-caption">Caption: <input type="text" id="my-image-widget-caption" name="my-image-widget-caption" value="' . esc_attr($options['caption']) . '" /></label></p>';
  echo '<input type="hidden" name="my-image-widget-submit" id="my-image-widget-submit" value="1" />';
}
register_widget_control('My Image Widget', 'my_image_widget_control', 300, 200);