__('图片背景 + 文字叠加的卡片网格。', 'aksrt')] ); } public function widget($args, $instance): void { $title = !empty($instance['title']) ? $instance['title'] : ''; $items_json = !empty($instance['items']) ? $instance['items'] : '[]'; $columns = max(1, min(4, (int) ($instance['columns'] ?? 2))); $items = json_decode($items_json, true); if (!is_array($items) || empty($items)) return; echo $args['before_widget']; if ($title) { echo $args['before_title'] . esc_html($title) . $args['after_title']; } echo '
'; foreach ($items as $item) { $image = esc_url($item['image'] ?? ''); $link = esc_url($item['link'] ?? ''); $card_title = sanitize_text_field($item['title'] ?? ''); $desc = sanitize_text_field($item['desc'] ?? ''); $overlay = sanitize_hex_color($item['overlay'] ?? ''); $text_color = sanitize_hex_color($item['text_color'] ?? ''); $height = sanitize_text_field($item['height'] ?? ''); $card_style = ''; if ($height) $card_style .= 'height:' . esc_attr($height) . ';'; $overlay_style = ''; if ($overlay) $overlay_style .= 'background:' . esc_attr($overlay) . ';'; $text_style = ''; if ($text_color) $text_style .= 'color:' . esc_attr($text_color) . ';'; echo '
'; if ($image) { echo '
'; echo '' . esc_attr($card_title) . ''; echo '
'; } if ($overlay_style) { echo '
'; } echo ''; echo '
'; } echo '
'; echo $args['after_widget']; } public function form($instance): void { $title = !empty($instance['title']) ? $instance['title'] : ''; $items = !empty($instance['items']) ? $instance['items'] : '[]'; $columns = !empty($instance['columns']) ? (int) $instance['columns'] : 2; ?>