WordPress: problematiche relative alla funzione comments_popup_link

La funzione di WordPress comments_popup_link() visualizza un link che punta alla finestra popup dei commenti di un post se viene usata anche la funzione comments_popup_script(), altrimenti visualizza un normale link ai commenti. Questa funzione deve essere usata nel Loop o nel loop dei commenti. Anche se questa funzione può sembrare utile, in realtà presenta delle problematiche che ne rendono difficile la gestione e che fanno si che il suo ruolo in un tema di WordPress sia più estetico che pratico. Vediamo perchè.

Accessibilità

Se la funzione permette di aprire una finestra popup con JavaScript, questo causa dei noti problemi per l'accessibilità della pagina. Infatti la funzione non da modo di notificare all'utente che il link aprirà una nuova finestra.

Se questo deficit può sembrare ininfluente per un utente medio, non lo è affatto per un utente che utilizza un lettore di schermo o un'altra tecnologia assistiva per la navigazione.

Per questo motivo, raccomando di utilizzare questa funzione senza JavaScript, ovvero senza utilizzare la funzione compagna comments_popup_script().

Layout CSS

Ecco un uso tipico di questa funzione:


<div class="comment-bubble">
	<?php comments_popup_link( '0', '1', '%', 'comment-bubble-link', 'Off' ); ?>
</div>

I parametri della funzione sono cinque:

  1. Testo per quando non ci sono ancora commenti.
  2. Testo per quando c'è un commento.
  3. Testo per quando ci sono più commenti.
  4. Classe CSS per il link.
  5. Testo per quando i commenti sono chiusi.

A livello di layout CSS c'è il problema delle dimensioni del box. Infatti il testo all'interno del box varia a seconda del numero dei commenti. Nel nostro esempio abbiamo la stringa 'Off' che è composta da tre caratteri. Quindi possiamo ipotizzare che un post possa ricevere da un minimo di 0 commenti ad un massimo di 999 commenti per non distruggere il layout del box.

Se questo è accettabile su un sito normale, potrebbe non esserlo nel caso di siti molto famosi. Tra l'altro c'è il problema di quando non ci sono commenti o di quando i commenti sono chiusi. Come facciamo infatti a dare uno stile diverso ai link per questa eventualità? La funzione accetta una sola classe CSS, quindi saremmo costretti ad utilizzare un filtro di WordPress, che purtroppo manca.

Potremmo usare jQuery:


if($('div.comment-bubble').length) {

	$('div.comment-bubble').each(function() {
	
		var $div = $(this);
		var $a = $('a', $div);
		var text = $a.text();
		
		switch(text) {
		
			case '0':
			case 'Off':
				$a.addClass('comment-bubble-link-no-comments');
				break;
			default:
				break;
		
		}
	
	});

}

Come si può notare, le problematiche CSS non mancano quando si utilizza questa funzione.

Conclusioni

La funzione comments_popup_link() presenta un utilità limitata ed alcune problematiche particolari. La sua utilità sembra per lo più rivolta all'estetica che non all'effettiva praticità.