FullClass Booking: where the studio pastes its widget key. * * @package FullClassBooking */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Register the setting. */ function fullclass_booking_register_setting() { register_setting( 'fullclass_booking', FULLCLASS_BOOKING_OPTION_KEY, array( 'type' => 'string', 'default' => '', 'sanitize_callback' => 'fullclass_booking_sanitize_key_setting', 'show_in_rest' => false, ) ); } add_action( 'admin_init', 'fullclass_booking_register_setting' ); /** * Sanitize callback for the key field. * * A paste we cannot read keeps the key already saved, so a mistyped save never * takes a working widget offline. * * @param mixed $value Submitted value. * @return string Key to store. */ function fullclass_booking_sanitize_key_setting( $value ) { $parsed = fullclass_booking_parse_key( is_string( $value ) ? wp_unslash( $value ) : '' ); if ( is_wp_error( $parsed ) ) { add_settings_error( FULLCLASS_BOOKING_OPTION_KEY, $parsed->get_error_code(), $parsed->get_error_message() ); return (string) get_option( FULLCLASS_BOOKING_OPTION_KEY, '' ); } return $parsed; } /** * Add the page under Settings. */ function fullclass_booking_add_settings_page() { add_options_page( __( 'FullClass Booking', 'fullclass-booking' ), __( 'FullClass Booking', 'fullclass-booking' ), 'manage_options', 'fullclass-booking', 'fullclass_booking_render_settings_page' ); } add_action( 'admin_menu', 'fullclass_booking_add_settings_page' ); /** * Link to the settings page from the Plugins list. * * @param array $links Existing action links. * @return array */ function fullclass_booking_action_links( $links ) { array_unshift( $links, '' . esc_html__( 'Settings', 'fullclass-booking' ) . '' ); return $links; } add_filter( 'plugin_action_links_' . plugin_basename( FULLCLASS_BOOKING_DIR . 'fullclass-booking.php' ), 'fullclass_booking_action_links' ); /** * Render the settings page. */ function fullclass_booking_render_settings_page() { if ( ! current_user_can( 'manage_options' ) ) { return; } $key = (string) get_option( FULLCLASS_BOOKING_OPTION_KEY, '' ); ?>
Booking Widget in FullClass, so the widget looks the same everywhere you use it.', 'fullclass-booking' ); ?>
Categories > Copy widget code.', 'fullclass-booking' ); ?>
[fullclass_booking category="cat_..." view="calendar"]