как отключить самозакрывающиеся теги для разметки в wordpress (например, для html5 или html4)?

<p>я хочу использовать html5 в своей теме wordpress, как мне отключить wptexturize?</p><p>я не против wp добавлять разрывы, но я хочу, чтобы они были <code><br></code>, а не <code><br /></code>. как получить контроль над тем, как эти разрывы отображаются в моем коде?</p><p><strong> правка: </strong>меня действительно волнует только проблема с тегом <code><br></code>, я не против типографских изменений, которые она вносит.</p><p><strong> edit2: </strong>на самом деле, я думаю, теги <code><img></code> тоже имеют значение. здесь будут иметь значение любые самозакрывающиеся автономные теги. таким образом, <code><hr></code> также может быть проблемой. не говоря уже о таких элементах <code>wp\_head()</code>, как <code><link></code> и различные теги <code><meta></code>.</p>

<p>разрывы строк добавляются <code>wpautop()</code>, а не <code>wptexturize()</code>. <code>wpautop()</code> также является функцией, которая автоматически добавляет теги абзаца.</p><p>вам лучше исправить <code><br /></code>, чем заменить фильтр. так как <code>wpautop()</code> работает с приоритетом 10, вы можете просто подключиться и исправить это.</p><pre><code>add\_filter( 'the\_content', 'html5\_line\_breaks', 25 ); function html5\_line\_breaks( $content ) { return str_replace( '<br />', '', $content ); } </code></pre><p><strong> редактировать после обновления op: </strong></p><p>функции wordpress предназначены для вывода xhtml. чтобы избавиться от этих косых черт в масштабе всего сайта, вам придется использовать выходной буфер. вы можете использовать фильтр, аналогичный приведенному выше, чтобы заменить косые черты в содержимом сообщения, но это не затронет вашу голову, боковую панель и т.д.</p><p>это немного уродливо и может оказать небольшое влияние на производительность, но здесь вы идете (поместите это в плагин или файл <code>functions.php</code> вашей темы):</p><pre><code>if ( !is\_admin() && ( ! defined('doing\_ajax') || ( defined('doing\_ajax') && ! doing\_ajax ) ) ) { ob\_start( 'html5\_slash\_fixer' ); add\_action( 'shutdown', 'html5\_slash\_fixer\_flush' ); } function html5\_slash\_fixer( $buffer ) { return str_replace( ' />', '>', $buffer ); } function html5\_slash\_fixer\_flush() { ob\_end\_flush(); } </code></pre><p>в этом коде написано, что если вы не находитесь в области администрирования и не выполняете обработку запроса ajax, затем начните буферизовать вывод через фильтр, а затем с помощью ловушки завершения работы wordpress выведите этот буфер.</p>

<p>ну вот:</p><pre><code>function my\_awesome\_tag\_fixer( $input ){ return preg_replace( '/(<.+)s/>/', '$1>', $input ); } foreach( array('the_content', 'the_excerpt', 'comment_text') as $filter ) add\_filter( $filter, 'my_awesome_tag_fixer', 12 ); это не самое элегантное решение, но оно выполняется намного быстрее, чем переписывание wpautop и wptexturize.

просто нашел это; самозакрывающиеся теги на пустых элементах являются действительными html.<blockquote> in html5 we've allowed the / on void elements (like , , , <input>, etc), to ease migration to and from xml. </blockquote> <a href="http://lists.whatwg.org/pipermail/help-whatwg.org/2008-august/000137.html">http://lists.whatwg.org/pipermail/help-whatwg.org/2008-august/000137.html больше информации: <a href="http://wiki.whatwg.org/wiki/faq#should_i_close_empty_elements_with_.2f.3e_or_.3e.3f">http://wiki.whatwg.org/wiki/faq#should_i_close_empty_elements_with_.2f.3e_or_.3e.3f 

это можно отключить, например,<strong> function.php </strong>файла темы, используя функцию remove_filter() (http://codex.wordpress.org/function_reference/remove_filter)remove_filter("the_content", "wptexturize"); 

у меня есть начальная тема для html5 и wordpress, а также функция не для wptexturize, а для wpautop (). включите также другие элементы html, такие как thead, tfoot, aside и используйте синтаксис html5, например а также/  wpautop for html5, allowed: table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)  @link http://nicolasgallagher.com/using-html5-elements-in-wordpress-post-content/  @author nicolas@nicolasgallagher.com / function html5wpautop($pee, $br = 1) { if ( trim($pee) === '' ) return ''; $pee = $pee . "\n"; // just to make things a little easier, pad the end $pee = preg_replace('|<br />s<br />|', "nn", $pee); // space things out a little // *insertion* of section|article|aside|header|footer|hgroup|figure|details|figcaption|summary $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)'; $pee = preg\_replace('!(<' . $allblocks . '[^>]>)!', "n$1", $pee); $pee = preg\_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee); $pee = str\_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines if ( strpos($pee, '<object') !== false ) { $pee = preg_replace('|s<param([^>])>s|', "<param$1>", $pee); // no pee inside object/embed $pee = preg\_replace('|\s*</embed>\s*|', '</embed>', $pee); } $pee = preg\_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates // make paragraphs, including one at the end $pees = preg\_split('/\n\s*\n/', $pee, -1, preg_split_no_empty); $pee = ''; foreach ( $pees as $tinkle ) $pee .= '' . trim($tinkle, "\n") . "</p>\n"; $pee = preg_replace('|s|', '', $pee); // under certain strange conditions it could create a p of entirely whitespace // *insertion* of section|article|aside $pee = preg_replace('!([^<]+)</(div|address|form|section|article|aside)>!', "$1</p></$2>", $pee); $pee = preg_replace('!s(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag $pee = preg_replace("|(<li.+?)|", "$1", $pee); // problem with nested lists $pee = preg\_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1>", $pee); $pee = str_replace('</blockquote>', '</blockquote>', $pee); $pee = preg_replace('!s(</?' . $allblocks . '[^>]*>)!', "$1", $pee); $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); if ($br) { $pee = preg\_replace\_callback('/<(script|style).*?<\/\\1>/s', create\_function('$matches', 'return str_replace("n", "<wppreservenewline />", $matches[0]);'), $pee); $pee = preg\_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks $pee = str\_replace('<wppreservenewline />', "\n", $pee); } $pee = preg\_replace('!(</?' . $allblocks . '[^>]>)s<br />!', "$1", $pee); // insertion of img|figcaption|summary $pee = preg\_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol|img|figcaption|summary)[^>]*>)!', '$1', $pee); if (strpos($pee, '<pre') !== false) $pee = preg\_replace\_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean\_pre', $pee ); $pee = preg\_replace( "|\n</p>$|", '', $pee ); return $pee; } // remove the original wpautop function remove\_filter('the\_excerpt', 'wpautop'); remove\_filter('the\_content', 'wpautop'); // add our new html5autop function add\_filter('the\_excerpt', 'html5wpautop'); add\_filter('the\_content', 'html5wpautop'); </code></pre><p>см. больше на <a href="http://code.google.com/p/wp-basis-theme/source/browse/trunk/basis-html5/">svn</a> темы для начинающих html5, а не на фреймворке!</p>

<p>отключить wptexturize плагин работал для меня: <a href="http://www.jasonlitka.com/2007/09/25/wordpress-plugin-disable-wptexturize/">отключить wptexturize</a> </p><p>это довольно просто, хотя:</p><pre><code>remove\_filter('the\_content', 'wptexturize'); remove\_filter('the\_excerpt', 'wptexturize'); remove\_filter('comment\_text', 'wptexturize'); </code></pre>