Guide · WordPress e PHP
Guide / WordPress e PHP
Verifica copertura su WordPress: plugin o snippet PHP
Due strade: il plugin ufficiale (blocco + shortcode, zero codice) oppure uno shortcode artigianale con proxy REST se vuoi il pieno controllo del markup. In entrambi i casi la chiave resta sul server.
1 · Il plugin (consigliato)
- Blocco Gutenberg
netcov-coverage/coverage-form+ shortcode[netcov_coverage] - Proxy REST con throttle per-IP e cache transient (1h copertura / 15min autocomplete)
- Footer di attribuzione CC BY 4.0 incluso di default
2 · Shortcode artigianale
// functions.php — shortcode + proxy (chiave in wp-config.php:
// define('NETCOV_API_KEY', getenv('NETCOV_API_KEY'));)
add_shortcode('netcov_form', function () {
return '<form id="ncov"><input name="city" placeholder="Comune">'
. '<input name="address" placeholder="Via e numero civico">'
. '<button>Verifica copertura</button><div id="ncov-out"></div></form>';
});
add_action('rest_api_init', function () {
register_rest_route('netcov/v1', '/coverage', [
'methods' => 'GET',
'callback' => function ($req) {
$city = sanitize_text_field($req['city'] ?? '');
$address = sanitize_text_field($req['address'] ?? '');
if ($city === '' || $address === '') {
return new WP_Error('bad_request', 'city e address richiesti', ['status' => 400]);
}
$cache_key = 'netcov_' . md5($city . '|' . $address);
if (false !== ($hit = get_transient($cache_key))) {
return $hit;
}
$r = wp_remote_get('https://api.netcov.io/coverage/italy?' . http_build_query(
['address' => $address . ', ' . $city, 'limit' => 8]
), ['headers' => ['Authorization' => 'Bearer ' . NETCOV_API_KEY], 'timeout' => 10]);
$code = wp_remote_retrieve_response_code($r);
$body = json_decode(wp_remote_retrieve_body($r), true);
if ($code < 200 || $code >= 300 || !is_array($body)) {
return new WP_Error('netcov_error', 'Servizio non disponibile, riprova', ['status' => 502]);
}
set_transient($cache_key, $body, HOUR_IN_SECONDS);
return $body;
},
// Solo visitatori loggati OPPURE aggiungi throttle per IP
// (vedi il plugin ufficiale per l'implementazione completa).
'permission_callback' => 'is_user_logged_in',
]);
});Domande frequenti
Vedi anche il widget embeddabile se preferisci non toccare PHP, e i codici di errore per gestire i casi limite.
Esiste un plugin WordPress per la verifica copertura?
Sì: il plugin netcov-coverage fornisce blocco Gutenberg e shortcode con proxy REST integrato, così la chiave API non lascia mai il server. È la via più rapida su WordPress.
Come evito di esporre la chiave API nel frontend WordPress?
Tutte le chiamate passano da un endpoint REST lato server (il tuo tema o il plugin), che aggiunge l'header Authorization. Il browser chiama solo il tuo dominio.
Posso mettere in cache le risposte?
Sì, ed è consigliato: transients da 1 ora per la copertura e 15 minuti per l'autocomplete, con chiave md5 della query. Riduci latenza e consumo di quota.
Quanta quota consumano autocomplete e copertura?
Ogni chiamata di autocomplete e ogni chiamata di copertura consumano quota del tuo piano (chiavi gratuite: circa 30 richieste al minuto e 1.000 al giorno). L'autocomplete ha un budget separato e più ampio (15x). Debounce di 250 ms e cache di 60 secondi tengono i consumi sotto controllo; /credits mostra i residui in tempo reale.
Pronto a integrare?
Crea la chiave gratuita per integrare, oppure prova gli endpoint nel Playground senza account. Guide per altri stack: Guida Next.js, Guida Django.