Convalida HTML5 del link della categoria in WordPress

In questi giorni, sfruttando i giorni di festa e qualche ora libera in più, sto mettendo mano al tema di questo sito internet. Tra le varie cose da fare, ho deciso di aggiornarlo ad HTML5 con microdati. Un problema riscontrato è stato l’attributo rel=”category tag” che viene aggiunto nei link utilizzando le funzioni per le categorie di WordPress. Questo attributo causa un errore di convalida con lo strumento del W3C validator.w3.org

Bad value category tag for attribute rel on element a: Keyword category is not registered

Si tratta di un problema di WordPress. Il valore category non è tra quelli previsti dalle raccomandazioni W3C, mentre il valore tag è corretto in quanto è stato recentemente aggiunto tramite Microformats.

wordpress-logo-hoz-rgb

È importante sottolineare che né categorytag sono previsti dalle vecchie raccomandazioni HTML4 e di conseguenza XHTML1. Semplicemente durante la convalida questo valore non veniva controllato, quindi nessuno prima non si era mai posto il problema.

Il problema è ancora presente nell’ultima versione di WordPress (3.5) ed esiste un ticket aperto a riguardo. C’è molta discussione su quale sia la soluzione migliore: aggiungere rel=”category” su Microformats oppure eliminarla tenendo solo rel=”tag”.

Ho pensato ad una soluzione che potesse tamponare temporaneamente in maniera elegante, in attesa di quello che il team di WordPress deciderà, alla fine, di fare. Si tratta di aggiungere poche righe di codice al file functions.php all’interno della cartella del tema, che potranno essere semplicemente rimosse una volta che non saranno più necessarie.

function fix_category_tag( $text ) {
	$text = str_replace('rel="category tag"', 'rel="tag"', $text);
	$text = str_replace('rel="category"', 'rel="tag"', $text);
	return $text;
}
add_filter( 'the_category', 'fix_category_tag' );

Questo filtro viene applicato chiamando funzione get_the_category_list e the_category definite nel file wp-includes/category-template.php