Pergunta

Eu tenho um modelo WordPress que contém o seguinte elemento:

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

Este retornos:

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

Infelizmente o atributo "lang" é XHTML inválido 1.1 -. E que o cliente gostaria que este nível de validação

file-template.php geral WordPress' contém o seguinte código:

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

$doctype é o parâmetro passado para ele (neste caso 'xhtml'). Deve get_option ser retornando um valor diferente de 'text / html'? Se assim for, o que devo ser a criação em WordPress para conseguir isso? - se alguma coisa

Eu também tentei usar preg_replace para tirar o atributo "lang", mas isso não parece ser capaz de igualar o texto. Se eu digitar o texto manualmente, ele corresponde! Possivelmente um problema codificação com a corda que está sendo retornado por language_attributes?

Foi útil?

Solução

Eu resolvi isso. Há um "language_attributes" filtro, então eu escrevi um plug-in que ganchos para isso e faz um preg_replace simples. Substituir trabalhou quando realizada aqui, e é uma maneira muito elegante de lidar com isso.

Editar

Como pedido, aqui está o código que usei:

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

Outras dicas

Se este é apenas um tema em seu próprio site, você pode editar header.php e mudar o

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

linha a ser codificado, melhora o desempenho também: -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top