Comment puis-je obtenir la fonction language_attributes de WordPress pour renvoyer une XHTML 1.1 valide?
-
05-07-2019 - |
Question
J'ai un modèle WordPress qui contient l'élément suivant:
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>>
Ceci retourne:
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en-US">
Malheureusement, le " lang " L'attribut n'est pas valide XHTML 1.1 - et le client souhaite ce niveau de validation.
Le fichier general-template.php de WordPress contient le code suivant:
if ( get_option('html_type') == 'text/html' || $doctype == 'html' )
$attributes[] = "lang=\"$lang\"";
$doctype
est le paramètre qui lui est transmis (dans ce cas, 'xhtml'). Est-ce que get_option
doit retourner une valeur autre que 'text / html'? Si oui, que dois-je définir dans WordPress pour y parvenir, le cas échéant?
J'ai également essayé d'utiliser preg_replace pour supprimer le " lang " attribut, mais cela ne semble pas pouvoir correspondre au texte. Si je saisis le texte manuellement, cela correspond! Peut-être un problème d'encodage avec la chaîne retournée par language_attributes?
La solution
J'ai résolu ça. Il y a un & Quot; language_attributes & Quot; filtre, j’ai donc écrit un plugin qui s’accroche à celui-ci et effectue un simple preg_replace. Le remplacement a fonctionné lorsqu’il est effectué ici, et c’est une façon très soignée de le gérer.
MODIFIER
Comme demandé, voici le code que j'ai utilisé:
<?php
/*
Plugin Name: Create Valid XHTML 1.1
Plugin URI: http://www.mycompany.com/create_valid_xhtml_1_1
Description: Removes deprecated "lang" attribute from (X)HTML header.
Author: dommer
Version: 1.0.0
Author URI: http://www.mycompany.com
*/
function create_valid_xhtml_1_1($language_attributes)
{
return preg_replace('/ lang=\"[a-z]+\-[A-Z]+\"/', '', $language_attributes);
}
add_filter('language_attributes', 'create_valid_xhtml_1_1');
?>
Autres conseils
S'il ne s'agit que d'un thème sur votre propre site, vous pouvez éditer header.php et changer le
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>>
La ligne à coder en dur améliore également les performances: -)