Как удалить изображения из записи при использовании the_content()?

22 сент. 2014 г., 05:56:41
Просмотры: 20.2K
Голосов: 2

Пытаясь изучить создание собственных тем без использования плагинов, я хотел добавить возможность отображать все изображения в записи, исключая миниатюру, в моем файле single-foobar.php, и я могу сделать это с помощью:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

$thumb_ID = get_post_thumbnail_id( $post->ID );
 $args = array(
   'post_type' => 'attachment',
   'numberposts' => -1,
   'post_status' => null,
   'post_parent' => $post->ID,
   'exclude' => $thumb_ID
  );

$attachments = get_posts( $args );
 if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
       echo '<div class="portproject">';
       $image_res = wp_get_attachment_image( $attachment->ID, ' img-responsive' );
       echo $image_res;
       echo '</div>';
      }
 }
 else { ?>
    <span> В данный момент изображения не загружены</span>
 <?php } endwhile; endif; ?>

Однако, когда я применяю свой статический HTML и затем пытаюсь вызвать get_the_content() с помощью:

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>

он удаляет изображения, но оставляет (image) в записи с пробелами, а затем отображает оставшийся текст. Я нашел похожий вопрос, но в нем предлагается использовать get_the_content(), который удаляет все стили из записи. Так как же мне удалить изображения из the_content()? Я нашел "Получение только текста WordPress из the_content (Удаление тегов изображений)" в моих поисках, но там все еще используется подход с get_the_content().

0
Все ответы на вопрос 3
1
10

Попробуйте удалить изображения (image) следующим образом:

<?php 
$content = get_the_content();
$content = preg_replace("/<img[^>]+\>/i", " ", $content);          
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
22 сент. 2014 г. 07:04:51
Комментарии

В случае изображений с тегом <a>, содержимое приходит в пустых тегах <a></a>.

Ravi Patel Ravi Patel
19 мая 2016 г. 14:54:38
2

Мой предпочтительный метод немного короче предыдущего ответа.

<php $myExcerpt = wp_trim_words( get_the_content(), 20, '' ) ; 
echo $myExcerpt ; ?>

Функция WordPress wp_trim_words() возвращает только текст (без изображений).

wp_trim_words ( string $text, int $num_words = 55, string $more = null )

25 янв. 2016 г. 17:05:42
Комментарии

Это не совсем так, wp_trim_words также возвращает изображения

spacebiker spacebiker
10 окт. 2018 г. 14:37:07

Это сработало для меня - спасибо, что нашли время :-)

michaelmcgurk michaelmcgurk
28 июл. 2022 г. 19:24:47
0

почти то же самое, что и у derekshrink, напрямую из разработки WordPress.

<?php echo wp_trim_words( get_the_content(), 40, '...' ); ?>

вы можете изменить количество слов, которое хотите показать

17 июл. 2020 г. 08:40:39