esc_html__('嵌入在线视频/音乐播放器或任意 iframe 内容。', 'aksrt'), 'classname' => 'widget_aksrt_iframe', ] ); } /** * @param array $args * @param array $instance */ public function widget($args, $instance): void { $raw = trim((string) ($instance['url'] ?? '')); if ($raw === '') { if (current_user_can('manage_options')) { echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo function_exists('aksrt_get_widget_null') ? aksrt_get_widget_null(__('请配置 URL 或 iframe 代码', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped : '
' . esc_html__('超级嵌入:', 'aksrt') . '' . esc_html__('请配置 URL 或 iframe 代码', 'aksrt') . '
'; echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } return; } $aspect = max(20, min(300, (int) ($instance['aspect'] ?? 55))); $allow_fs = !empty($instance['allowfullscreen']); echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $title = apply_filters('widget_title', (string) ($instance['title'] ?? ''), $instance, $this->id_base); if ($title !== '') { echo $args['before_title'] . esc_html($title) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } $iframe_html = ''; if (stripos($raw, '') !== false) { $iframe_html = wp_kses( $raw, [ 'iframe' => [ 'src' => true, 'width' => true, 'height' => true, 'frameborder' => true, 'allow' => true, 'allowfullscreen' => true, 'loading' => true, 'class' => true, 'style' => true, 'referrerpolicy' => true, 'title' => true, 'sandbox' => true, 'data-src' => true, 'framespacing' => true, 'border' => true, ], ] ); // Prefer lazy: if iframe has src but no data-src, convert. if (preg_match('/]*>/i', $iframe_html, $m) && stripos($m[0], 'data-src=') === false && preg_match('/\ssrc=["\']([^"\']+)["\']/i', $m[0], $sm) ) { $src = $sm[1]; $tag = preg_replace('/\ssrc=["\'][^"\']*["\']/i', ' src="" data-src="' . esc_url($src) . '"', $m[0], 1); if (is_string($tag) && stripos($tag, 'lazyload') === false) { if (preg_match('/\sclass=["\']([^"\']*)["\']/', $tag)) { $tag = preg_replace('/\sclass=["\']([^"\']*)["\']/', ' class="$1 lazyload aksrt-lazy"', $tag, 1); } else { $tag = preg_replace('/^'; } // zibll shell: mb20 > wp-block-embed is-type-video relative-h radius8 > padding-bottom. echo '
'; echo '
'; echo '
'; echo $iframe_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '
'; echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * @param array $instance */ public function form($instance): void { $title = (string) ($instance['title'] ?? ''); $url = (string) ($instance['url'] ?? ''); $aspect = (int) ($instance['aspect'] ?? 55); ?>

$new_instance * @param array $old_instance * @return array */ public function update($new_instance, $old_instance): array { $business = [ 'title' => sanitize_text_field((string) ($new_instance['title'] ?? '')), 'url' => trim((string) ($new_instance['url'] ?? '')), 'aspect' => max(20, min(300, (int) ($new_instance['aspect'] ?? 55))), 'allowfullscreen' => !empty($new_instance['allowfullscreen']) ? 1 : 0, ]; return $business; } }