Как я могу заставить функцию WordPress language_attributes возвращать действительный XHTML 1.1?

У меня есть шаблон WordPress, который содержит следующий элемент:

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

К сожалению, атрибут "lang" является недопустимым для XHTML 1.1, и клиенту нужен этот уровень проверки.

Файл general-template.php WordPress содержит следующий код:

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

$doctype — это переданный ему параметр (в данном случае «xhtml»). Должен ли get_option возвращать значение, отличное от text/html? Если да, то что мне нужно настроить в WordPress для достижения этой цели?

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


person dommer    schedule 26.11.2009    source источник


Ответы (2)


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

ИЗМЕНИТЬ

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

<?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');
?>
person dommer    schedule 27.11.2009

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

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

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

person Adam Dempsey    schedule 26.11.2009
comment
Это вариант. Но я не уверен, для каких других целей клиент может использовать шаблон, поэтому, если я могу, я хотел бы сохранить эту функциональность. - person dommer; 27.11.2009