Ho configurato Discourse Connect SSO utilizzando il plugin ufficiale, in modo che i miei utenti WP accedano a Discourse senza registrarsi nuovamente lì. Funziona tutto bene, tranne il fatto che ogni singola richiesta alla dashboard di WP (area amministratore) viene rallentata di 10 secondi a causa di un timeout che ho scoperto solo tramite il plugin Query Monitor.
https://{indirizzo-nostro-forum}/site.json cURL error 28: Connection timeout after 10001 ms
WPDiscourse\Admin\MetaBox->discourse_request()
wp-content/plugins/wp-discourse/lib/plugin-utilities.php:516
WPDiscourse\Admin\MetaBox->get_discourse_categories()
wp-content/plugins/wp-discourse/lib/plugin-utilities.php:273
WPDiscourse\Admin\MetaBox->setup_options()
wp-content/plugins/wp-discourse/admin/meta-box.php:49
do_action(‘admin_init’)
wp-includes/plugin.php:517
Plugin: wp-discourse
Anche se funzionasse, perché è necessaria una chiamata del genere in primo luogo? Come posso disattivarla?
Il forum e il sito sono su server separati. Non c’è Cloudflare. SSL è letsencrypt. Non aveva questo problema in staging. Mi sono spostato sul live, ho creato una nuova chiave API e un segreto, cercando di risolvere questo problema ma non ha funzionato.
Il plugin dice Non sei connesso a Discourse. Verifica che le impostazioni di connessione siano corrette. Se il problema persiste, abilita i log di connessione e controlla i Log. … ma lo sono, poiché gli utenti sono in grado di accedere al forum senza problemi semplicemente cliccando su un link contenente il suo indirizzo.
I log in WP dicono:
[2024-10-31 10:54:47] connection.INFO: check_connection_status.failed_to_connect {"error":"wpdc_response_error","message":"An invalid response was returned from Discourse","http_code":"","http_body":""}
Pensavo che quella strana cosa di sicurezza di WP la bloccasse, quindi ho aggiunto questo ma senza successo:
add_filter('http_request_host_is_external', [$this, 'mark_discourse_api_url_external'], 10, 3);
function mark_discourse_api_url_external($is_external, $host, $url)
{
if ($host === "{indirizzo-nostro-forum}") {
return true; // Permetti la richiesta indicando che l'host È esterno
}
return $is_external;
}