' . esc_html__( 'Settings', 'adisistemak-booking-for-adi-camping' ) . '' ); return $links; } /** * Add the settings page under Settings. */ public function add_settings_page() { add_options_page( __( 'Adisistemak Booking Embed for ADI Camping', 'adisistemak-booking-for-adi-camping' ), __( 'Adisistemak Booking', 'adisistemak-booking-for-adi-camping' ), 'manage_options', 'adisistemak-booking-for-adi-camping', array( $this, 'render_settings_page' ) ); } /** * Register the booking URL setting. */ public function register_settings() { register_setting( 'adisistemak_booking_for_adi_camping_settings', ADISISTEMAK_BOOKING_FOR_ADI_CAMPING_OPTION_URL, array( 'type' => 'string', 'sanitize_callback' => array( $this, 'sanitize_booking_url' ), 'default' => ADISISTEMAK_BOOKING_FOR_ADI_CAMPING_DEFAULT_URL, ) ); add_settings_section( 'adisistemak_booking_for_adi_camping_general', __( 'Booking embed', 'adisistemak-booking-for-adi-camping' ), array( $this, 'render_section_description' ), 'adisistemak-booking-for-adi-camping' ); add_settings_field( ADISISTEMAK_BOOKING_FOR_ADI_CAMPING_OPTION_URL, __( 'Booking URL', 'adisistemak-booking-for-adi-camping' ), array( $this, 'render_booking_url_field' ), 'adisistemak-booking-for-adi-camping', 'adisistemak_booking_for_adi_camping_general' ); } /** * Sanitize the booking URL; empty falls back to the default. * * @param mixed $value Raw option value. * @return string */ public function sanitize_booking_url( $value ) { $url = is_string( $value ) ? trim( $value ) : ''; if ( '' === $url ) { return ADISISTEMAK_BOOKING_FOR_ADI_CAMPING_DEFAULT_URL; } $sanitized = adisistemak_booking_for_adi_camping_sanitize_embed_url( $url ); if ( '' === $sanitized ) { add_settings_error( ADISISTEMAK_BOOKING_FOR_ADI_CAMPING_OPTION_URL, 'adisistemak_booking_for_adi_camping_invalid_url', __( 'Booking URL must be a valid HTTPS address.', 'adisistemak-booking-for-adi-camping' ), 'error' ); return adisistemak_booking_for_adi_camping_get_url(); } return $sanitized; } /** * Render the settings section description. */ public function render_section_description() { echo '
' . esc_html__( 'Enter the HTTPS URL of your ADI Camping public booking page. The shortcode embeds that page in an iframe. Leave blank to use the default ADI Camping booking URL.', 'adisistemak-booking-for-adi-camping' ) . '
'; echo '' . esc_html__( 'This plugin connects visitors’ browsers to the ADI Camping booking service. See the plugin readme for service terms and privacy information.', 'adisistemak-booking-for-adi-camping' ) . '
'; } /** * Render the booking URL input. */ public function render_booking_url_field() { $value = adisistemak_booking_for_adi_camping_get_url(); ?>