У меня есть веб-сайт на WordPress, который на домашней странице использует статическую страницу, содержащую только короткие коды для создания контента.
Страница получает эти короткие коды, устанавливая переднюю страницу на статическую страницу и используя the_content (); на странице. Содержимое страницы не содержит пробелов, только короткие коды, поэтому выглядит примерно так:
[content-shortcode blah blah][more content-shortcode blah blah]
Все работает отлично, за исключением того, что WordPress добавляет пустой <p></p>
до кода коротких кодов и еще один P / P в конце всего кода коротких кодов (ничего между короткими кодами).
Как я могу их удалить? Однако я не хочу отключать глобальную функцию удаления wpautop, так как это может быть полезно для некоторых пользователей, но я хочу удалить только первые и последние P, которые появляются на главной странице.
Есть несколько вещей, которые вы можете попробовать.
Вы можете отложить wp_autop
потому что он обрабатывает до вывода короткого wp_autop
:
remove_filter( 'the_content', 'wpautop' ); add_filter( 'the_content', 'wpautop' , 12);
Или используйте cleanup_shortcode_fix()
которая должна помочь в вашей проблеме:
function cleanup_shortcode_fix($content) { $array = array('<p>[' => '[', ']</p>' => ']', ']<br />' => ']', ']<br>' => ']'); $content = strtr($content, $array); return $content; } add_filter('the_content', 'cleanup_shortcode_fix'); $string = preg_replace_('/<p>s*</p>/', '', $string); add_filter('the_content', 'cleanup_shortcode_fix', 1);
Попробуйте это (вставьте этот код где-нибудь в functions.php
):
function shortcode_empty_paragraph_fix($content){ $array = array ( '<p>[' => '[', ']</p>' => ']', ']<br />' => ']' ); $content = strtr($content, $array); return $content; } add_filter('the_content', 'shortcode_empty_paragraph_fix');
Существуют различные функции, кроме wpautop()
которые фильтруют содержимое сообщения , например force_balance_tags()
, которое предназначено для сбалансирования плохого HTML, поступающего через редактор.
Они в основном определяются в файле formatting.php , где вы можете увидеть различный код в источнике.
Удаление этих фильтров может быть таким же простым, как одна строка, как вы указываете:
remove_filter('the_content', 'wpautop');
Для получения дополнительной информации: http://codex.wordpress.org/Function_Reference/wpautop
Посмотрите ниже ссылки, которые помогут вам.
может это вам помочь.
Поскольку вы хотите удалить только теги <p>
на домашней странице, добавьте следующий код в файл functions.php
:
add_action('pre_get_posts', 'remove_autop_from_home'); function remove_autop_from_home() { // check to see if we are on the home page if(is_home()) { remove_filter('the_content', 'wpautop'); } }