$args Widget arguments. * @param array $instance Widget settings. */ protected function open(array $args, array $instance): void { echo (string) ($args['before_widget'] ?? ''); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Trusted HTML wrapper supplied by the active theme. $title = apply_filters('widget_title', sanitize_text_field((string) ($instance['title'] ?? ''))); if ($title !== '') { echo (string) ($args['before_title'] ?? '

') . esc_html($title) . (string) ($args['after_title'] ?? '

'); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Theme wrappers are trusted HTML; the title is escaped. } } /** @param array $args */ protected function close(array $args): void { echo (string) ($args['after_widget'] ?? ''); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Trusted HTML wrapper supplied by the active theme. } /** @param array $instance */ public function form($instance): ?string { $title = sanitize_text_field((string) ($instance['title'] ?? '')); ?>

$newInstance New settings. * @param array $oldInstance Previous settings. * @return array */ public function update($newInstance, $oldInstance): array { return ['title' => sanitize_text_field((string) ($newInstance['title'] ?? ''))]; } }