2009-11-26 2 views
1

У меня есть шаблон WordPress, который содержит следующий элемент:Как я могу заставить функцию word_attributes WordPress возвращать действительный XHTML 1.1?

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

Это возвращает:

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

К сожалению, атрибут «языки» недействителен XHTML 1.1 - и клиент хотел бы этот уровень проверки ,

WordPress' файл общего template.php содержит следующий код:

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

$doctype является параметр, переданный ему (в данном случае 'Xhtml'). Должно ли get_option вернуть значение, отличное от 'text/html'? Если да, то что я должен устанавливать в WordPress для достижения этого - если что-нибудь?

Я также попытался использовать preg_replace, чтобы вынуть атрибут «lang», но это, похоже, не соответствовало тексту. Если я введу текст вручную, он будет соответствовать! Возможно, проблема с кодировкой, когда строка возвращается языковыми атрибутами?

ответ

2

Я решил это. Есть фильтр «language_attributes», поэтому я написал plugin, который перехватывает это и делает простой preg_replace. Замена работала, когда выполнялась здесь, и это довольно аккуратный способ справиться с этим.

EDIT

В соответствии с просьбой, вот код, который я использовал:

<?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

Если это просто тема на вашем сайте, вы можете редактировать header.php и изменить линию

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

быть зашиты, повышает производительность тоже :-)

+0

Это вариант. Но я не уверен, что другой использует клиент, который может поместить шаблон, поэтому, если можно, я бы хотел сохранить эту функциональность. – dommer