¿Cómo puedo obtener la función language_attributes de WordPress para devolver XHTML 1.1 válido?
-
05-07-2019 - |
Pregunta
Tengo una plantilla de WordPress que contiene el siguiente elemento:
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>>
Esto devuelve:
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en-US">
Desafortunadamente el " lang " El atributo no es válido XHTML 1.1, y al cliente le gustaría este nivel de validación.
El archivoWordPress 'general-template.php contiene el siguiente código:
if ( get_option('html_type') == 'text/html' || $doctype == 'html' )
$attributes[] = "lang=\"$lang\"";
$doctype
es el parámetro que se le pasa (en este caso, 'xhtml'). ¿Debería get_option
devolver un valor que no sea 'text / html'? Si es así, ¿qué debo configurar en WordPress para lograr esto, en todo caso?
También intenté usar preg_replace para eliminar " lang " atributo, pero esto no parece ser capaz de coincidir con el texto. Si ingreso el texto manualmente, ¡coincide! ¿Posiblemente un problema de codificación con la cadena devuelta por language_attributes?
Solución
Resolví esto. Hay un & Quot; language_attributes & Quot; filtro, así que escribí un plugin que se conecta a eso y realiza un simple preg_replace. El reemplazo funcionó cuando se realizó aquí, y es una forma bastante ordenada de manejarlo.
EDIT
Según lo solicitado, aquí está el código que utilicé:
<?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');
?>
Otros consejos
Si este es solo un tema en su propio sitio, puede editar header.php y cambiar el
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes('xhtml'); ?>>
línea a codificar, también mejora el rendimiento :-)