代码之家  ›  专栏  ›  技术社区  ›  dommer

如何获取WordPress语言_attributes函数以返回有效的XHTML 1.1?

  •  1
  • dommer  · 技术社区  · 15 年前

    我有一个包含以下元素的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的general-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 回复  |  直到 12 年前
        1
  •  2
  •   dommer    15 年前

    我解决了这个问题。有一个“语言属性”过滤器,所以我写了一个 plugin 它可以勾住这个,做一个简单的preg_替换。替换程序在这里执行时工作正常,处理它的方法非常简单。

    编辑

    根据要求,我使用的代码如下:

    <?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');
    ?>
    
        2
  •  1
  •   Adam Dempsey    15 年前

    如果这只是您自己站点上的一个主题,您可以编辑header.php并更改

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

    要硬编码的行,也提高了性能:—)