Удаление тегов <p> из the_content

9 авг. 2013 г., 01:15:45
Просмотры: 63.9K
Голосов: 8

У меня есть формат записи Image (Изображение), и я столкнулся с проблемой, где изображение оборачивается тегом <p>. Я хочу избавиться от этого тега (особенно в версии single.php) для этого типа записей.

Как можно получить доступ к форматированию в теме и удалить теги <p>, или создать любой нужный формат для вывода этого типа записей, не затрагивая записи других форматов?

3
Комментарии

Почему важен тег <p>? Мое предположение заключается в том, что основная проблема - это просто стилизация. В таком случае, я полагаю, что решение с помощью CSS будет самым простым.

s_ha_dum s_ha_dum
9 авг. 2013 г. 01:31:24

Тег <p> - ваш друг. Вам действительно стоит научиться его использовать.

westondeboer westondeboer
9 авг. 2013 г. 03:14:49

оба эти комментария просто плохие. HTML важен по множеству причин, но в данном случае потому, что пользователь явно просит решение без их использования.

albert albert
18 дек. 2018 г. 18:41:36
Все ответы на вопрос 12
0

Если этот тип записи называется "image", вы можете создать отдельный шаблон для отображения только этого типа записи.

Просто скопируйте ваш файл 'single.php' и переименуйте копию в 'single-image.php'. Теперь вы можете управлять отображением только записей типа image. Для удаления HTML-тегов я предпочитаю использовать функцию strip_tags(). Если вы выводите содержимое записи с помощью the_content(), оно уже применяет фильтр содержимого, оборачивая строки в теги <p>.

Вот пример, как можно получить содержимое вашего изображения без тегов:

$imageContent = get_the_content();
$stripped = strip_tags($imageContent, '<br><a>'); // замените <br> и <a> на любые теги, которые нужно оставить после очистки
echo $stripped;

Надеюсь, это поможет!

9 авг. 2013 г. 01:29:38
0

WordPress автоматически добавляет теги <p> к контенту. Поэтому они отображаются при загрузке содержимого. Это происходит из-за фильтра wpautop. Мы удалим этот фильтр только для типа записи image. Вы можете управлять этим, добавив следующий код в файл functions.php.

// Добавляем фильтр для управления тегами p
add_filter( 'the_content', 'wti_remove_autop_for_image', 0 );

function wti_remove_autop_for_image( $content )
{
     global $post;

     // Проверяем, является ли это отдельной записью типа 'image' и удаляем фильтр
     if ( is_single() && $post->post_type == 'image' )
          remove_filter('the_content', 'wpautop');

     return $content;
}

is_single() проверяет, отображается ли отдельная запись.

7 дек. 2013 г. 20:18:59
0

По умолчанию WordPress добавляет теги абзаца

в описания категорий. Чтобы отключить это, добавьте следующий код в файл functions.php:

// Удаление тегов p из описания категории
remove_filter('term_description','wpautop');

Просто и легко (без кода).

Спасибо

14 нояб. 2018 г. 18:20:23
0

Вы можете использовать get_the_content() вместо the_content(). Это может решить вашу проблему, а другое решение такое же, как описано у @Chittaranjan

5 июн. 2015 г. 14:27:35
0

Просто добавьте следующую строку кода в файл functions.php вашей темы

Для контента:

remove_filter( 'the_content', 'wpautop' );

Для краткого описания (excerpt):

remove_filter( 'the_excerpt', 'wpautop' );

Узнать больше: https://codex.wordpress.org/Function_Reference/wpautop

12 янв. 2017 г. 09:52:20
1

Вы можете использовать специальный класс записи для single-post или single-format-standard и скрыть его по вашему усмотрению только на странице записи, чтобы это не вызывало конфликтов с другими частями сайта.

Пример CSS кода*

.single-post .entry-content p:empty { display: none; }

Пример CSS кода для формата записи "Изображение"

.single-format-image .entry-content p:empty { display: none; }
12 янв. 2017 г. 09:23:52
Комментарии

Отличное предложение! Я не знал, что существует :empty!

Kenton de Jong Kenton de Jong
10 июл. 2020 г. 20:06:42
0

Чтобы удалить тег p из контента, вы можете использовать следующий код

<?php remove_filter ('the_content', 'wpautop'); ?>
5 июн. 2015 г. 14:34:55
0

Другой способ реализации на основе решения от @chittaranjan

add_filter( 'the_content', 'remove_autop_for_image', 0 );

function remove_autop_for_image( $content ) {
     global $post;

     if ( is_singular('image'))
          remove_filter('the_content', 'wpautop');

     return $content;
}
5 июн. 2015 г. 16:41:11
1

Добавьте этот код в файл "style.css" "активной дочерней темы"

p:empty {
  display: none;
}
12 янв. 2017 г. 08:57:46
Комментарии

+1 p:empty { display: none; } @Parthavi-Patel. Хорошо скрывать пустые элементы таким образом, так как удаление нативных функций — плохая практика, хотя у нас и есть такая возможность.

Maqk Maqk
12 янв. 2017 г. 09:04:40
0

Если нужно убрать автоматическое форматирование из конкретной страницы или записи, можно использовать следующий код:

<?php remove_filter ('the_content', 'wpautop'); the_content(); ?>
26 сент. 2017 г. 22:55:55
0
-1

Хотя запрос уже был решён, публикую ниже для дальнейшего использования.

remove_filter ('the_exceprt', 'wpautop');

remove_filter ('the_content', 'wpautop');

remove_filter('term_description','wpautop');

Источник

27 дек. 2017 г. 11:49:37
1
-1

Используя wp_strip_all_tags, вы можете удалить все HTML-теги, включая p, div и другие. https://developer.wordpress.org/reference/functions/wp_strip_all_tags/

wp_strip_all_tags(category_description());

17 дек. 2021 г. 09:00:05
Комментарии

Вопрос касается остановки автоматического создания этих тегов WordPress, а не удаления тегов из строки в базе данных.

Rup Rup
19 дек. 2021 г. 22:07:46