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?

Était-ce utile?

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: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top