Поддержка Темы и шаблоны Первая картинка из записи вместо миниатюры

  • Использую тему Mobile Shop — Это дочерняя тема для StoreOne.
    Пытаюсь в качестве миниатюры назначить первую картинку из записи.
    В конец файла functions.php добавляю код:

    function first_post_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
      if(empty($first_img)){
       $first_img = "/wp-content/themes/theme/images/noimages.jpg";
      }
      return $first_img;
    }

    В файле content-index.php (здесь указан весь код):

    <div id="post-<?php the_ID(); ?>" <?php post_class("col-md-4 col-sm-6 bgs-post home-post"); ?>>
    	<div class="post-inner">
    		<div class="img-thumbnail">
    			<?php if(has_post_thumbnail()): ?>
    			<?php the_post_thumbnail('storeone-thumb', array( 'class' => 'img-responsive' )); ?>
    			<?php else: ?>
    			<img src="<?php echo esc_url(get_template_directory_uri().'/images/featured-image-340x225.png'); ?>" class="img-responsive">
    			<?php endif; ?>
    			<div class="overlay">
    				<a class="bgs-blog-more" href="<?php the_permalink(); ?>" title="<?php esc_attr_e('Read More', 'storeone'); ?>"><i class="fa fa-angle-right"></i></a>
    			</div>
    		</div>
    		<div class="bgs-post-content">
    			<time class="bgs-date entry-date published" datetime="<?php echo esc_attr( get_the_date( 'c' )); ?>">
    				<div class="bds-date-block bds-day"><?php the_time( 'd',  get_the_ID()); ?></div>
    				<div class="bds-date-block bds-month"><?php the_time( 'M, Y',  get_the_ID()); ?></div>
    			</time>
    			<?php the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); ?>
    			<div class="entry-summary"><?php the_excerpt(); ?></div>
    			<div class="clearfix"></div>
    		</div>
    	</div>
    </div>

    Седьмую строку
    <img src="<?php echo esc_url(get_template_directory_uri().'/images/featured-image-340x225.png'); ?>" class="img-responsive">
    меняю на
    <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" class="img-responsive">
    Код срабатывает, миниатюры стали видны, но посты, которые на одной странице отображаются по несколько десятков, налазят друг на друга. То есть сбивается красивое расположение постов. Понимаю, что проблема в стилях страницы, но разобраться не могу.
    Можете помочь?

    • Тема изменена 4 мес., 2 нед. назад пользователем  SeVlad. Причина: ссылка

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 3 ответов — с 31 по 33 (всего 33)
  • Модератор SeVlad

    (@sevlad)

    wp.me/3YHjQ

    Название плагина не помните?

    Да их множество. Напр старый добрый https://wordpress.org/plugins/search-regex/

    Про бекапы только не забывайте.

    Про бекапы только не забывайте

    Установил, тестирую на Open Servere.
    К примеру надо из поста удалить строку

    <div style="text-align: center;"><img src="http://mysite.com/wp-content/uploads/2019/02/pictures.jpg" alt="" width="590" height=""></div>

    Вставил её в поле Search pattern
    Нажал Поиск нашел один результат и его можно удалить, но как удалить множество таких строк, где название картинки меняется. Попробовал так, ничего не находит:

    <div style="text-align: center;"><img src="http://mysite.com/wp-content/uploads/2019/02/(.*?).jpg" alt="" width="590" height=""></div>

    Что опять не так? Вроде бы можно переменные использовать, но как — не понимаю.
    P.S. Галочки Regex тоже перепробовал.

    • Ответ изменён 4 мес., 2 нед. назад пользователем  georgmann.
    Модератор SeVlad

    (@sevlad)

    wp.me/3YHjQ

    Установил, тестирую на Open Servere.

    Разве что протестировать

    Что опять не так?

    1. При использовании регулярок нужно экранировать спец.символы — кавычки, слеши, скобки и тд.
    2. Любой символ имеет значение. Найденный только 1 результат говорит, что остальные отличаются.
    3. Так Вы рискуете удалить все картинки из поста. А Вам же нужно только первую.

    В общем, Вам в гуглояндексы разобраться с регулярками.

Просмотр 3 ответов — с 31 по 33 (всего 33)