run:R W Run
6.55 KB
2026-03-11 16:18:51
R W Run
7.08 KB
2026-03-11 16:18:51
R W Run
6.4 KB
2026-03-11 16:18:51
R W Run
2.84 KB
2026-03-11 16:18:51
R W Run
7.43 KB
2026-03-11 16:18:51
R W Run
11.87 KB
2026-03-11 16:18:51
R W Run
7.12 KB
2026-03-11 16:18:51
R W Run
6.27 KB
2026-03-11 16:18:51
R W Run
7.37 KB
2026-03-11 16:18:51
R W Run
12.35 KB
2026-03-11 16:18:51
R W Run
8.62 KB
2026-03-11 16:18:51
R W Run
15.01 KB
2026-03-11 16:18:51
R W Run
4 KB
2026-03-11 16:18:51
R W Run
5.59 KB
2026-03-11 16:18:51
R W Run
6.89 KB
2026-03-11 16:18:51
R W Run
5.8 KB
2026-03-11 16:18:51
R W Run
5.12 KB
2026-03-11 16:18:51
R W Run
2.66 KB
2026-03-11 16:18:51
R W Run
6.62 KB
2026-03-11 16:18:51
R W Run
20.85 KB
2026-03-11 16:18:51
R W Run
error_log
📄class-wp-widget-block.php
1<?php
2/**
3 * Widget API: WP_Widget_Block class
4 *
5 * @package WordPress
6 * @subpackage Widgets
7 * @since 5.8.0
8 */
9
10/**
11 * Core class used to implement a Block widget.
12 *
13 * @since 5.8.0
14 *
15 * @see WP_Widget
16 */
17class WP_Widget_Block extends WP_Widget {
18
19 /**
20 * Default instance.
21 *
22 * @since 5.8.0
23 * @var array
24 */
25 protected $default_instance = array(
26 'content' => '',
27 );
28
29 /**
30 * Sets up a new Block widget instance.
31 *
32 * @since 5.8.0
33 */
34 public function __construct() {
35 $widget_ops = array(
36 'classname' => 'widget_block',
37 'description' => __( 'A widget containing a block.' ),
38 'customize_selective_refresh' => true,
39 'show_instance_in_rest' => true,
40 );
41 $control_ops = array(
42 'width' => 400,
43 'height' => 350,
44 );
45 parent::__construct( 'block', __( 'Block' ), $widget_ops, $control_ops );
46
47 add_filter( 'is_wide_widget_in_customizer', array( $this, 'set_is_wide_widget_in_customizer' ), 10, 2 );
48 }
49
50 /**
51 * Outputs the content for the current Block widget instance.
52 *
53 * @since 5.8.0
54 *
55 * @param array $args Display arguments including 'before_title', 'after_title',
56 * 'before_widget', and 'after_widget'.
57 * @param array $instance Settings for the current Block widget instance.
58 */
59 public function widget( $args, $instance ) {
60 $instance = wp_parse_args( $instance, $this->default_instance );
61
62 echo str_replace(
63 'widget_block',
64 $this->get_dynamic_classname( $instance['content'] ),
65 $args['before_widget']
66 );
67
68 /**
69 * Filters the content of the Block widget before output.
70 *
71 * @since 5.8.0
72 *
73 * @param string $content The widget content.
74 * @param array $instance Array of settings for the current widget.
75 * @param WP_Widget_Block $widget Current Block widget instance.
76 */
77 echo apply_filters(
78 'widget_block_content',
79 $instance['content'],
80 $instance,
81 $this
82 );
83
84 echo $args['after_widget'];
85 }
86
87 /**
88 * Calculates the classname to use in the block widget's container HTML.
89 *
90 * Usually this is set to `$this->widget_options['classname']` by
91 * dynamic_sidebar(). In this case, however, we want to set the classname
92 * dynamically depending on the block contained by this block widget.
93 *
94 * If a block widget contains a block that has an equivalent legacy widget,
95 * we display that legacy widget's class name. This helps with theme
96 * backwards compatibility.
97 *
98 * @since 5.8.0
99 *
100 * @param string $content The HTML content of the current block widget.
101 * @return string The classname to use in the block widget's container HTML.
102 */
103 private function get_dynamic_classname( $content ) {
104 $blocks = parse_blocks( $content );
105
106 $block_name = isset( $blocks[0] ) ? $blocks[0]['blockName'] : null;
107
108 switch ( $block_name ) {
109 case 'core/paragraph':
110 $classname = 'widget_block widget_text';
111 break;
112 case 'core/calendar':
113 $classname = 'widget_block widget_calendar';
114 break;
115 case 'core/search':
116 $classname = 'widget_block widget_search';
117 break;
118 case 'core/html':
119 $classname = 'widget_block widget_custom_html';
120 break;
121 case 'core/archives':
122 $classname = 'widget_block widget_archive';
123 break;
124 case 'core/latest-posts':
125 $classname = 'widget_block widget_recent_entries';
126 break;
127 case 'core/latest-comments':
128 $classname = 'widget_block widget_recent_comments';
129 break;
130 case 'core/tag-cloud':
131 $classname = 'widget_block widget_tag_cloud';
132 break;
133 case 'core/categories':
134 $classname = 'widget_block widget_categories';
135 break;
136 case 'core/audio':
137 $classname = 'widget_block widget_media_audio';
138 break;
139 case 'core/video':
140 $classname = 'widget_block widget_media_video';
141 break;
142 case 'core/image':
143 $classname = 'widget_block widget_media_image';
144 break;
145 case 'core/gallery':
146 $classname = 'widget_block widget_media_gallery';
147 break;
148 case 'core/rss':
149 $classname = 'widget_block widget_rss';
150 break;
151 default:
152 $classname = 'widget_block';
153 }
154
155 /**
156 * The classname used in the block widget's container HTML.
157 *
158 * This can be set according to the name of the block contained by the block widget.
159 *
160 * @since 5.8.0
161 *
162 * @param string $classname The classname to be used in the block widget's container HTML,
163 * e.g. 'widget_block widget_text'.
164 * @param string $block_name The name of the block contained by the block widget,
165 * e.g. 'core/paragraph'.
166 */
167 return apply_filters( 'widget_block_dynamic_classname', $classname, $block_name );
168 }
169
170 /**
171 * Handles updating settings for the current Block widget instance.
172 *
173 * @since 5.8.0
174
175 * @param array $new_instance New settings for this instance as input by the user via
176 * WP_Widget::form().
177 * @param array $old_instance Old settings for this instance.
178 * @return array Settings to save or bool false to cancel saving.
179 */
180 public function update( $new_instance, $old_instance ) {
181 $instance = array_merge( $this->default_instance, $old_instance );
182
183 if ( current_user_can( 'unfiltered_html' ) ) {
184 $instance['content'] = $new_instance['content'];
185 } else {
186 $instance['content'] = wp_kses_post( $new_instance['content'] );
187 }
188
189 return $instance;
190 }
191
192 /**
193 * Outputs the Block widget settings form.
194 *
195 * @since 5.8.0
196 *
197 * @see WP_Widget_Custom_HTML::render_control_template_scripts()
198 *
199 * @param array $instance Current instance.
200 */
201 public function form( $instance ) {
202 $instance = wp_parse_args( (array) $instance, $this->default_instance );
203 ?>
204 <p>
205 <label for="<?php echo $this->get_field_id( 'content' ); ?>">
206 <?php
207 /* translators: HTML code of the block, not an option that blocks HTML. */
208 _e( 'Block HTML:' );
209 ?>
210 </label>
211 <textarea id="<?php echo $this->get_field_id( 'content' ); ?>" name="<?php echo $this->get_field_name( 'content' ); ?>" rows="6" cols="50" class="widefat code"><?php echo esc_textarea( $instance['content'] ); ?></textarea>
212 </p>
213 <?php
214 }
215
216 /**
217 * Makes sure no block widget is considered to be wide.
218 *
219 * @since 5.8.0
220 *
221 * @param bool $is_wide Whether the widget is considered wide.
222 * @param string $widget_id Widget ID.
223 * @return bool Updated `is_wide` value.
224 */
225 public function set_is_wide_widget_in_customizer( $is_wide, $widget_id ) {
226 if ( str_starts_with( $widget_id, 'block-' ) ) {
227 return false;
228 }
229
230 return $is_wide;
231 }
232}
233
Ui Ux Design – Teachers Night Out

Get in Touch

© 2024 Teachers Night Out. All Rights Reserved.