Nasıl WordPress language_attributes geçerli XHTML 1.1 dönmek için işlev alabilirim?

2 Cevap php

Ben aşağıdaki öğeyi içeren bir WordPress şablonu var:

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

Bu döndürür:

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

Ne yazık ki "lang" özniteliği geçersiz XHTML 1.1 - ve müşteri doğrulama bu düzeyde istiyoruz.

WordPress 'genel template.php dosyası aşağıdaki kodu içerir:

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

$doctype kendisine iletilen parametre (bu durumda 'XHTML') 'dir. get_option 'text / html' den başka bir değer döndüren edilmelidir? Eğer öyleyse, ben bunu başarmak için WordPress ne ayar olmalı - eğer bir şey?

Ben de "lang" niteliğini almaya preg_replace kullanarak denedim, ama bu metni eşleştirmek mümkün görünmüyordu. Ben elle metin girerseniz, o maçlar! Muhtemelen dize ile bir kodlama sorunu language_attributes tarafından iade edilen?

2 Cevap

Ben bu çözülür. Orada bir "language_attributes" filtre, bu yüzden bir plugin o takar ve basit bir preg_replace yapar yazdı. Burada yapıldığında çalıştı yerine, ve bunu işlemek için oldukça düzgün bir yol.

EDIT

Istendiği gibi, burada kullanılan kod:

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

Bu kendi sitesinde sadece bir tema ise, header.php düzenleyebilir ve değiştirebilir

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

kodlanmış edilecek hat, çok :-) performansını artırır