'array', 'sanitize_callback' => array( __CLASS__, 'sanitize' ), 'default' => array( 'default_token' => '' ), ) ); add_settings_section( 'sternewidget_main', __( 'Default widget', 'sternewidget' ), '__return_null', self::PAGE ); add_settings_field( 'default_token', __( 'Widget token or embed code', 'sternewidget' ), array( __CLASS__, 'render_token_field' ), self::PAGE, 'sternewidget_main', array( 'label_for' => 'sternewidget-default-token' ) ); } /** * Sanitize callback: reduce any input to the bare token. * * @param mixed $value Submitted value. * @return array */ public static function sanitize( $value ) { $raw = is_array( $value ) && isset( $value['default_token'] ) ? (string) $value['default_token'] : ''; $token = SterneWidget_Embed::normalize_token( $raw ); if ( '' === $token && '' !== trim( $raw ) ) { add_settings_error( STERNEWIDGET_OPTION, 'sternewidget_invalid_token', __( 'No valid widget token found. Please paste the token or the embed code from your SterneWidget dashboard.', 'sternewidget' ) ); $existing = get_option( STERNEWIDGET_OPTION, array() ); $token = is_array( $existing ) && isset( $existing['default_token'] ) ? (string) $existing['default_token'] : ''; } return array( 'default_token' => $token ); } /** * Load admin CSS only on our page. * * @param string $hook_suffix Current admin page. * @return void */ public static function enqueue_assets( $hook_suffix ) { if ( 'settings_page_sternewidget' !== $hook_suffix ) { return; } wp_enqueue_style( 'sternewidget-admin', STERNEWIDGET_URL . 'assets/admin.css', array(), STERNEWIDGET_VERSION ); } /** * Plugin list action links. * * @param array $links Existing links. * @return array */ public static function action_links( $links ) { $custom = array( '' . esc_html__( 'Settings', 'sternewidget' ) . '', '' . esc_html__( 'Dashboard', 'sternewidget' ) . '', ); return array_merge( $custom, $links ); } /** * Render the token field. * * @return void */ public static function render_token_field() { $settings = get_option( STERNEWIDGET_OPTION, array() ); $token = is_array( $settings ) && isset( $settings['default_token'] ) ? (string) $settings['default_token'] : ''; ?>