我怎样才能得到WordPress的language_attributes函数返回有效XHTML 1.

2019-09-26 06:35发布

我有一个包含以下元素的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 - 和客户端想这个层次的验证。

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”属性也试过,但是这似乎并没有能够匹配文本。 如果我手动输入的文本,它匹配! 可能与字符串的编码问题被language_attributes回来了?

Answer 1:

我解决了这个。 有一个“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');
?>


Answer 2:

如果这仅仅是在自己的网站主题,您可以编辑header.php文件,更改

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

线进行硬编码,提高性能太:-)



文章来源: How can I get the WordPress language_attributes function to return valid XHTML 1.1?