'800px', 'width' => '100%', 'url' => 'http://localhost:8080', // Change to your actual Docker container URL in production ), $atts); // Generate iframe with responsive wrapper $output = '
'; $output .= ''; $output .= '
'; return $output; } /** * Register the widget */ public function register_calculator_widget() { register_widget('Puffin_Calculator_Widget_Class'); } /** * Enqueue needed scripts and styles */ public function enqueue_scripts() { // Enqueue custom styles if needed wp_enqueue_style( 'puffin-calculator-styles', plugin_dir_url(__FILE__) . 'css/puffin-calculator.css', array(), '1.0.0' ); // Optional: Enqueue scripts for enhanced interaction between WordPress and iframe wp_enqueue_script( 'puffin-calculator-scripts', plugin_dir_url(__FILE__) . 'js/puffin-calculator.js', array('jquery'), '1.0.0', true ); } } /** * Widget class for the calculator */ class Puffin_Calculator_Widget_Class extends WP_Widget { /** * Initialize the widget */ public function __construct() { parent::__construct( 'puffin_calculator_widget', 'Puffin Offset Calculator', array('description' => 'Adds the Puffin Offset Calculator to a widget area') ); } /** * Front-end display of the widget */ public function widget($args, $instance) { echo $args['before_widget']; if (!empty($instance['title'])) { echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title']; } echo do_shortcode('[puffin_calculator height="' . esc_attr($instance['height'] ?? '800px') . '" url="' . esc_url($instance['url'] ?? 'http://localhost:8080') . '"]'); echo $args['after_widget']; } /** * Back-end widget form */ public function form($instance) { $title = isset($instance['title']) ? $instance['title'] : 'Carbon Offset Calculator'; $height = isset($instance['height']) ? $instance['height'] : '800px'; $url = isset($instance['url']) ? $instance['url'] : 'http://localhost:8080'; ?>