Как-то давно, не помню уже где, нашел такой сниппет:
if ( ! is_admin() && ( ! defined( 'DOING_AJAX' ) || ( defined( 'DOING_AJAX' ) && ! DOING_AJAX ) ) ) {
ob_start( 'html5_slash_fixer' );
$len = ob_get_length();
if ( $len && $len > 0 ) {
add_action( 'shutdown', 'html5_slash_fixer_flush' );
}
}
function html5_slash_fixer( $buffer ) {
return str_replace( ' />', '>', $buffer );
}
function html5_slash_fixer_flush() {
ob_end_flush();
}
исправно работает...
периодически использую его в проектах, когда заказчику ну очень нужен чистый лист в валидаторе;)