Wie kann ich die WordPress language_attributes-Funktion dazu bringen, gültiges XHTML 1.1 zurückzugeben?

Lesezeit: 2 Minuten

Wie kann ich die WordPress language attributes Funktion dazu bringen gultiges XHTML
dommer

Ich habe eine WordPress-Vorlage, die das folgende Element enthält:

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

Das gibt zurück:

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

Leider ist das “lang”-Attribut ungültiges XHTML 1.1 – und der Client möchte diese Validierungsstufe.

Die Datei general-template.php von WordPress enthält den folgenden Code:

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

$doctype ist der übergebene Parameter (in diesem Fall ‘xhtml’). Sollen get_option einen anderen Wert als ‘text/html’ zurückgeben? Wenn ja, was sollte ich in WordPress einstellen, um dies zu erreichen – wenn überhaupt?

Ich habe auch versucht, preg_replace zu verwenden, um das “lang” -Attribut zu entfernen, aber dies schien nicht mit dem Text übereinstimmen zu können. Wenn ich den Text manuell eingebe, passt er! Möglicherweise ein Codierungsproblem mit der von language_attributes zurückgegebenen Zeichenfolge?

Wie kann ich die WordPress language attributes Funktion dazu bringen gultiges XHTML
dommer

Ich habe das gelöst. Es gibt einen “language_attributes”-Filter, also schrieb ich a Plugin das hakt sich darin ein und führt ein einfaches preg_replace aus. Das Ersetzen funktionierte, wenn es hier durchgeführt wurde, und es ist eine ziemlich nette Art, damit umzugehen.

BEARBEITEN

Wie gewünscht, hier ist der Code, den ich verwendet habe:

<?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]+"https://stackoverflow.com/", '', $language_attributes);
}

add_filter('language_attributes', 'create_valid_xhtml_1_1');
?>

Wenn dies nur ein Thema auf Ihrer eigenen Site ist, können Sie die header.php bearbeiten und die ändern

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

Zeile hartcodiert werden, verbessert auch die Leistung 🙂

  • Das ist eine Option. Ich bin mir jedoch nicht sicher, für welche anderen Verwendungen der Client die Vorlage verwenden könnte, daher würde ich diese Funktionalität gerne beibehalten, wenn ich kann.

    – dommer

    27. November ’09 um 10:33

.

286040cookie-checkWie kann ich die WordPress language_attributes-Funktion dazu bringen, gültiges XHTML 1.1 zurückzugeben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy