'',
'accessiweb_primary_color' => '#0066CC',
'accessiweb_position_x' => 'left',
'accessiweb_position_y' => 'bottom',
'accessiweb_offset_x' => 10,
'accessiweb_offset_y' => 10,
'accessiweb_unit_x' => 'px',
'accessiweb_unit_y' => 'px',
'accessiweb_icon_size' => 'medium',
'accessiweb_custom_link' => '',
'accessiweb_target_link' => 'blank',
];
$opts = get_option('accessiweb_widget_settings', []);
if (!is_array($opts)) {
$opts = [];
}
return wp_parse_args($opts, $defaults);
}
/**
* Inizializza le opzioni al momento dell’attivazione del plugin
* (evita siti che installano il plugin ma non salvano mai la pagina impostazioni).
*/
function accessiweb_activate_plugin()
{
$defaults = accessiweb_get_options();
$stored = get_option('accessiweb_widget_settings', null);
if (!is_array($stored)) {
update_option('accessiweb_widget_settings', $defaults);
return;
}
// Merge per upgrade: aggiunge eventuali nuove chiavi senza rompere settaggi esistenti
update_option('accessiweb_widget_settings', wp_parse_args($stored, $defaults));
}
register_activation_hook(__FILE__, 'accessiweb_activate_plugin');
// Funzione per aggiungere le opzioni del plugin
function accessiweb_add_admin_menu()
{
$icon_svg = 'data:image/svg+xml;base64,' . base64_encode('');
add_menu_page(
'AccessiWeb Widget', // Titolo della pagina
'AccessiWeb', // Nome del menu
'manage_options', // Capacità necessaria per accedere
'accessiweb-widget', // Slug della pagina
'accessiweb_options_page', // Funzione di callback
$icon_svg, // Icona SVG del menu
2 // Posizione nel menu
);
}
add_action('admin_menu', 'accessiweb_add_admin_menu');
// Funzione per visualizzare la pagina delle opzioni
function accessiweb_options_page()
{
$plugin_url = plugin_dir_url(__FILE__);
?>
Configurazione Widget di accessibilità AccessiWeb
AccessiWeb
Il widget AccessiWeb aggiunge al tuo sito web strumenti, regolazioni ed impostazioni rapide progettate per
personalizzare l'esperienza di navigazione e fruizione dei contenuti secondo le specifiche necessità degli
utenti.
8 profili di navigazione dedicati a specifiche esigenze di disabilità
10 regolazioni sui contenuti per migliorarne l'accessibilità ed il comfort visivo
12 impostazioni di accessibilità percettiva, visiva e uditiva
15 regolazioni cromatiche per personalizzare il comfort visivo e la leggibilità
Puoi personalizzare il widget secondo lo stile del tuo sito ed integrarlo in modo semplice ed immediato
nella tua piattaforma Wordpress
Registrarti gratuitamente e ottieni la tua chiave di licenza su accessiweb.it.
'accessiweb_sanitize_options',
]
);
add_settings_section(
'accessiweb_widget_section',
'Impostazioni Widget',
'accessiweb_settings_section_callback',
'accessiweb_widget'
);
add_settings_field('accessiweb_license_key', 'License Key', 'accessiweb_license_key_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_primary_color', 'Primary Color', 'accessiweb_primary_color_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_position_x', 'Position X', 'accessiweb_position_x_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_position_y', 'Position Y', 'accessiweb_position_y_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_offset_x', 'Offset X', 'accessiweb_offset_x_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_offset_y', 'Offset Y', 'accessiweb_offset_y_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_unit_x', 'Unit X', 'accessiweb_unit_x_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_unit_y', 'Unit Y', 'accessiweb_unit_y_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_icon_size', 'Icon Size', 'accessiweb_icon_size_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_custom_link', 'Custom Link', 'accessiweb_custom_link_render', 'accessiweb_widget', 'accessiweb_widget_section');
add_settings_field('accessiweb_target_link', 'Target Link', 'accessiweb_target_link_render', 'accessiweb_widget', 'accessiweb_widget_section');
}
add_action('admin_init', 'accessiweb_settings_init');
function accessiweb_sanitize_options($input)
{
// Verifica del nonce
if (
!isset($_POST['accessiweb_nonce']) ||
!wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['accessiweb_nonce'])), 'accessiweb_save_settings')
) {
// Non modificare nulla se nonce non valido
return accessiweb_get_options();
}
// Parti dalle opzioni attuali (con default) e sovrascrivi solo ciò che è valido
$sanitized_input = accessiweb_get_options();
if (isset($input['accessiweb_license_key'])) {
$sanitized_input['accessiweb_license_key'] = sanitize_text_field($input['accessiweb_license_key']);
}
if (isset($input['accessiweb_primary_color'])) {
$color = sanitize_hex_color($input['accessiweb_primary_color']);
if (!empty($color)) {
$sanitized_input['accessiweb_primary_color'] = $color;
}
}
if (isset($input['accessiweb_position_x']) && in_array($input['accessiweb_position_x'], ['left', 'right'], true)) {
$sanitized_input['accessiweb_position_x'] = sanitize_text_field($input['accessiweb_position_x']);
}
if (isset($input['accessiweb_position_y']) && in_array($input['accessiweb_position_y'], ['top', 'bottom'], true)) {
$sanitized_input['accessiweb_position_y'] = sanitize_text_field($input['accessiweb_position_y']);
}
if (isset($input['accessiweb_offset_x'])) {
$v = absint($input['accessiweb_offset_x']);
$sanitized_input['accessiweb_offset_x'] = ($v >= 0 && $v <= 9999) ? $v : 10;
}
if (isset($input['accessiweb_offset_y'])) {
$v = absint($input['accessiweb_offset_y']);
$sanitized_input['accessiweb_offset_y'] = ($v >= 0 && $v <= 9999) ? $v : 10;
}
if (isset($input['accessiweb_unit_x']) && in_array($input['accessiweb_unit_x'], ['px', '%'], true)) {
$sanitized_input['accessiweb_unit_x'] = sanitize_text_field($input['accessiweb_unit_x']);
}
if (isset($input['accessiweb_unit_y']) && in_array($input['accessiweb_unit_y'], ['px', '%'], true)) {
$sanitized_input['accessiweb_unit_y'] = sanitize_text_field($input['accessiweb_unit_y']);
}
if (isset($input['accessiweb_icon_size']) && in_array($input['accessiweb_icon_size'], ['small', 'medium', 'large'], true)) {
$sanitized_input['accessiweb_icon_size'] = sanitize_text_field($input['accessiweb_icon_size']);
}
if (isset($input['accessiweb_custom_link'])) {
$sanitized_input['accessiweb_custom_link'] = esc_url_raw($input['accessiweb_custom_link']);
}
if (isset($input['accessiweb_target_link']) && in_array($input['accessiweb_target_link'], ['self', 'blank'], true)) {
$sanitized_input['accessiweb_target_link'] = sanitize_text_field($input['accessiweb_target_link']);
}
add_settings_error(
'accessiweb_messages',
'accessiweb_message',
'Modifiche salvate.',
'updated'
);
return $sanitized_input;
}
// Callback della sezione
function accessiweb_settings_section_callback()
{
echo 'Configura le impostazioni del widget AccessiWeb qui sotto:';
}
// Funzioni per visualizzare i campi del form
function accessiweb_license_key_render()
{
$options = accessiweb_get_options();
?>
Inserisci la tua License Key AccessiWeb, disponibile all'interno della tua area riservata.
Inserisci il colore primario del Widget in formato esadecimale (default: #0066CC).
Seleziona l'allineamento orizzontale del Widget (default: Left).
Seleziona l'allineamento verticale del Widget (default: Bottom).
Inserisci la distanza orizzontale del Widget (offsetX) in pixel o percentuale (default: 10).
Inserisci la distanza verticale del Widget (offsetY) in pixel o percentuale (default: 10).
Scegli l'unità di misura per la distanza orizzontale (default: px).
Scegli l'unità di misura per la distanza verticale (default: px).
Seleziona la dimensione dell'icona del Widget (default: Medium).
Opzionale: puoi specificare un link alla tua Dichiarazione di Accesibilità. Se non impostato il
bottone "Accessibilità" presente nel Widget mostrerà un testo informativo generico riferito al Widget.