Come disabilitare completamente i commenti da WordPress

Molti siti basati su wordpress non hanno la necessità di avere uno spazio commenti ed un form per farli inserire. Per quei siti a cui basta una pagina di contatto, è meglio disabilitare la funzione commenti per evitare spam e pingback spammosi. Come fare? Si può agire su diversi livelli: dal semplice disabilitare la possibilità di inserire commenti, alla totale rimozione dell’area commenti (più sicuro). Inoltre, possiamo effettuare questa disabilitazione tramite un plugin apposito, oppure modificando direttamente file di wordpress. Vediamo come fare in dettaglio.

Per una disibilitazione dell’inserimento commento, potete semplicemente utilizzare le impostazioni già presenti nell’amministrazione del vostro blog: andate in Impostazioni –> Discussione e nelle opzioni a disposizioni deselezionate “Consenti la scrittura di commenti per i nuovi articoli” e deselezionate anche “Permetti le notifiche dei link da altri blog (pingback e trackback) sui nuovi articoli “. Suggerisco inoltre di abilitare anche “Il commento deve essere approvato manualmente”. Queste operazioni chiuderanno il vostro blog ai commenti (e ai pingback spammosi), ma nel lato pubblico – nella sezione commenti di ogni post/pagina – sarà presente una scritta del tipo “Commenti chiusi per questo post”. Se volete eliminare anche questa voce, o avere una disabilitazione totale, bisogna agire sul codice o con un plugin apposito.

Per una totale e veloce disabilitazione globale o parziale, potete usare il plugin Disable Comments (Plugin Repository). Questo disabilita completamente i commenti da ogni tipo di pagina (post, page, allegati, ecc.) in modo che tale impostazione non possa essere sovrascritta da impostazioni del singolo post. E’ globale. Inoltre, rimuove tutti i campi collegati ai commenti e i vari link dell’amministrazione relativi ai commenti (dashboard, widgets, menu bar). Su installazioni multisite può essere utilizzate per disabilitare i commenti in tutto il network. Una volta installato ed attivato, tramite le Impostazioni potete scegliere se disabilitare i commenti ovunque, oppure solo in types specifici (solo nei post, nelle pagine, nei media).

Se invece non volete aggiungere l’ennesimo plugin al vostro wordpress, una soluzione ugualmente efficace è quella di andare a sostituire il file dedicato ai commenti, ovvero il comments.php . Andate nella cartella vostrosito/wp-content/themes/VOSTRO-TEMA/ e troverete un file nominato comments.php . Semplicemente rinominatelo (se state usando FTP utilizzate il tasto destro e rinominatelo; se state usando il gestore file del vostro hosting troverete sicuramente il link per rinominarlo). Il nuovo nome può essere qualcosa del tipo comments-OLD.php. Ora create un nuovo file dal nome comments.php e lasciatelo vuoto: il vostro blog non andrà in errore (perché troverà comunque tale file), ma la sezione di codice per inserire commenti non sarà più disponibile.

Un’altra soluzione per rimuovere completamente la funzione commenti da wordpress senza utilizzare un plugin è aggiungere il seguente codice al file functions.php del tema che utilizzate. Bisogna quindi editare il file functions.php del vostro tema. Potete farlo tramite FTP oppure anche tramite il pannello di controllo del vostro wordpress, andando su Aspetto –> Editor, e poi selezionare (nel menu a destra) la voce “Funzioni” (functions.php). Se state utilizzando un tema figlio (child) andate nella directory wp-content/themes/NOME-TEMA-FIGLIO/ e controllate se esiste già il file functions.php. Se esiste, aggiungete il codice seguente. Se non esiste, create un file dal nome functions.php e aggiungetegli il codice seguente. Prima di aggiungere codici php ai vostri file, ricordatevi di farvi una copia di backup.

<?php
// Aggiungere al file function.php 
// Disabilitazione commenti e trackbacks in post types
function df_disable_comments_post_types_support() {
	$post_types = get_post_types();
	foreach ($post_types as $post_type) {
		if(post_type_supports($post_type, 'comments')) {
			remove_post_type_support($post_type, 'comments');
			remove_post_type_support($post_type, 'trackbacks');
		}
	}
}
add_action('admin_init', 'df_disable_comments_post_types_support');
// Chiude commenti front-end
function df_disable_comments_status() {
	return false;
}
add_filter('comments_open', 'df_disable_comments_status', 20, 2);
add_filter('pings_open', 'df_disable_comments_status', 20, 2);
// Nascondi commenti esistenti
function df_disable_comments_hide_existing_comments($comments) {
	$comments = array();
	return $comments;
}
add_filter('comments_array', 'df_disable_comments_hide_existing_comments', 10, 2);
// Remuove commenti dal menu
function df_disable_comments_admin_menu() {
	remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'df_disable_comments_admin_menu');
// Reindirizza ogni utente se prova ad accedere alla pagina commenti
function df_disable_comments_admin_menu_redirect() {
	global $pagenow;
	if ($pagenow === 'edit-comments.php') {
		wp_redirect(admin_url()); exit;
	}
}
add_action('admin_init', 'df_disable_comments_admin_menu_redirect');
// Remuove metabox commenti dalla dashboard
function df_disable_comments_dashboard() {
	remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'df_disable_comments_dashboard');
// Remuove link commenti dalla admin bar
function df_disable_comments_admin_bar() {
	if (is_admin_bar_showing()) {
		remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
	}
}
add_action('init', 'df_disable_comments_admin_bar');

Nota: fare attenzione ai file di apertura e chiusura php, ovvero non inserire due volte se già presente. Fare sempre prima una copia di backup. Se avete dubbi o problemi i commenti (qui funzionano, eh!) sono a vostra disposizione