2009-11-26 27 views
1

J'ai un modèle de WordPress qui contient l'élément suivant:Comment puis-je obtenir la fonction language_attributes de WordPress pour renvoyer XHTML 1.1 valide?

<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>> 

Ce retour:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en-US"> 

Malheureusement, l'attribut "lang" est XHTML valide 1.1 - et le client souhaite que ce niveau de validation .

WordPress fichier général-template.php contient le code suivant:

if (get_option('html_type') == 'text/html' || $doctype == 'html') 
    $attributes[] = "lang=\"$lang\""; 

$doctype est le paramètre passé à (dans ce cas xhtml '). Est-ce que get_option doit renvoyer une valeur autre que 'text/html'? Si oui, que devrais-je définir dans WordPress pour y parvenir - si quelque chose?

J'ai également essayé d'utiliser preg_replace pour enlever l'attribut "lang", mais cela ne semblait pas pouvoir correspondre au texte. Si je saisis le texte manuellement, cela correspond! Peut-être un problème de codage avec la chaîne renvoyée par language_attributes?

Répondre

2

Je résolu ce. Il y a un filtre "language_attributes", donc j'ai écrit un plugin qui s'y connecte et fait un simple preg_replace. Le remplacement a fonctionné quand il a été joué ici, et c'est une bonne façon de le gérer.

EDIT

Comme demandé, voici le code je:

<?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'); 
?> 
1

Si cela est juste un thème sur votre propre site, vous pouvez la modifier header.php et changer le

<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>>

ligne à hardcoded, améliore les performances trop :-)

+0

C'est une option. Mais je ne suis pas sûr à quelles autres utilisations le client peut mettre le modèle, donc, si je peux, je voudrais conserver cette fonctionnalité. – dommer