Миниатюры записей и страниц в WordPress. Как задать и как вывести миниатюру поста?

Потрясающая фишка в WordPress!

Начну с нуля. Итак, для начала вы должны понять разницу между миниатюрами и обычными изображениями из поста. Миниатюра — это что-то вроде превьюшки к посту, в самом посте она может даже и не использоваться.

Предположим, у вас есть какая-то категория, и на странице этой категории перед некоторыми записями (а может быть и перед каждой) есть какая-то картинка, которая по сути и является превьюшкой поста, т.е. миниатюрой. Если мы перейдем на страницу одной из записей, то можем найти эту картинку в её содержимом, а можем и не найти.

В общем ладно, в двух словах, миниатюра — это изображение-превью к постам, которое:

  • может использоваться, а может и не использоваться в содержимом поста,
  • может выводиться вместе ссылкой на пост на страницах категорий, меток, архивов и т.д.,
  • может автоматически подгоняться под определенный размер (я имею ввиду разрешение изображения),

По сути вы можете использовать ее даже в качестве фона сайта, т.е. для каждой записи — собственный фон.

Шаг 1. Включение поддержки миниатюр для вашей темы WordPress

Для того, чтобы использовать миниатюры на своем сайте, нужно сначала включить их, потому что по умолчанию этот функционал выключен.

Всё, что нам потребуется для активации миниатюр — это вставить следующую строчку кода в ваш файл functions.php (файлов с таким названием может быть много — нам нужен именно тот, который находится непосредственно в папке с вашей текущей темой).

add_theme_support( 'post-thumbnails' ); // для всех типов постов

Если вы не хотите использовать миниатюры во всех типах постов сразу, вы можете подключить их например только для записей (post):

add_theme_support( 'post-thumbnails', array( 'post' ) );

или только для страниц (page):

add_theme_support( 'post-thumbnails', array( 'page' ) );

или только для записей и только для страниц:

add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );

Можно ли назначить миниатюру таксономии WordPress?

Стандартными средствами — нет. Вы можете использовать какой-нибудь из плагинов, добавляющих произвольные поля для таксономий (рубрик и меток в том числе), либо прописать URL изображения в описании вашего конкретного элемента таксономии.

Шаг 2. Как установить миниатюру для поста?

Вообще есть два способа установки миниатюр через админку. Они друг от друга особо ничем не отличаются — можете использовать тот, который покажется вам удобнее.

Способ 1. Метабокс «Миниатюра записи»

Он вот такой:

Метабокс для добавления миниатюры

Имейте ввиду, что даже если метабокс у вас подключен, он может не отображаться на странице редактирования поста. Как включить его отображение?

Для начала посмотрите в правую верхнюю часть страницы (возможно ее потребуется проскроллить к началу). Там должна быть вот такая вкладка Настройки экрана:

Вкладка настроек экрана

Открыв её, нам нужно убедиться, что напротив Миниатюра записи стоит галочка:

Включаем метабокс миниатюры в настройках экрана

После этого, уже в самом метабоксе нажимаем ссылку Задать миниатюру, затем, в открывшемся окне мы можем установить в качестве миниатюры одно из уже загруженных изображений либо загрузить новое.

Способ 2. Кнопка «Добавить медиафайл»

Итак, переходим на страницу редактирования поста и нажимаем кнопку Добавить медиафайл:

кнопка добавления медиафайлов

В появившемся окне кликаем по ссылке Задать миниатюру:

кликаем по ссылке Задать миниатюру

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

Шаг 3. Выводим миниатюры постов на страницах сайта

То, как мы будем выводить миниатюры в данном случае может во многом зависеть от вашего шаблона WordPress. Чаще всего, во многих темах WordPress миниатюры в основном выводятся вместе с тегом <img> сразу. Но что, если нам надо получить URL миниатюры?

Рассмотрим оба случая.

the_post_thumbnail() и get_the_post_thumbnail(). Стандартный способ вывода миниатюр.

Функции the_post_thumbnail() и get_the_post_thumbnail() имеют несколько отличий:

get_the_post_thumbnail() the_post_thumbnail()
Возвращает миниатюру поста в виде HTML-тега <img>, возвращаемый HTML-код можно использовать в других функциях или записать в переменную. Выводит миниатюру поста, является эквивалентом для:

echo get_the_post_thumbnail( null );
Позволяет в качестве первого параметра указать ID поста, миниатюру которого нужно получить. При помощи этой функции можно вывести только миниатюру текущего поста из цикла.
В качестве второго параметра можно указать размер получаемой миниатюры, по умолчанию — размер, заданный в Параметры > Медиафайлы. В качестве первого параметра можно указать размер выводимой миниатюры.

Особо заморачиваться не будем, рассмотрим один и тот же пример для каждой из функций. Итак, сначала пример для get_the_post_thumbnail():

<?php
while( have_posts() ) : the_post();
	?>
	<h2><a href="<?php the_permalink() ?>"><?php the_title() ?></a></h2>
	<a href="<?php the_permalink() ?>"><?php echo get_the_post_thumbnail() ?></a>
	<?php
endwhile;

Этот пример выводит заголовки (функция the_title()) и миниатюры постов со ссылками (функция the_permalink()) на сам пост.

Тот же самый пример для функции the_post_thumbnail():

<?php
while( have_posts() ) : the_post();
	?>
	<h2><a href="<?php the_permalink() ?>"><?php the_title() ?></a></h2>
	<a href="<?php the_permalink() ?>"><?php the_post_thumbnail() ?></a>
	<?php
endwhile;

Получение URL миниатюры при помощи функции wp_get_attachment_image_src() и get_post_thumbnail_id()

Функция wp_get_attachment_image_src() нужна для получения параметров изображения — его URL, ширины и высоты (в данном случае нам будет интересен именно URL). Она не работает в цикле и её обязательным параметром является ID вложения (ID миниатюры в данном случае).

В то же время ID миниатюры мы можем получить, используя функцию get_post_thumbnail_id(), указав в качестве параметра ID поста, иначе будет возвращаться ID миниатюры текущего поста из цикла.

Посмотрим, как это будет выглядеть на примере:

$thumbnail_attributes = wp_get_attachment_image_src( get_post_thumbnail_id(), 'medium' ); // возвращает массив параметров миниатюры
echo $thumbnail_attributes[0]; // URL миниатюры

Как видите, в качестве второго параметра мы также можем указать размер получаемого изображения в виде строки ( один из зарегистрированных размеров, например thumbnail, medium, large, full и т.д.) или в виде массива array( 100, 100 ). Чтобы миниатюры на сайте получались качественными, задавайте соответствующие размеры.

Как выбрать область обрезки миниатюры?

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

Для того, чтобы вы смогли сами выбирать область картинки для отображения на сайте, установите себе плагин Manual Image Crop. Этот плагин позволяет для каждого загруженного изображения для его каждого размера вручную установить область, отображаемую на сайте. Потрясающий инструмент!

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

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

  • Александр25 августа 2014 в 11:08 #

    У меня такая проблема, миниатюры выводятся даже в самом верху поста, хотя для поста есть другая картинка, подскажите как убрать миниатюру из самого поста, для примера оставил одну миниатюру, посмотрите на http://vipchange.ru/kak-nakrutit-reposty-vkontakte/

    • Миша25 августа 2014 в 12:08 #

      Имеется ввиду логотип с буквой "В"?

      • Александр25 августа 2014 в 12:08 #

        Я уже разобрался, там в файле функций было значение оно задавало размеры миниатюры в самом посте, я выставил значение 1х1 и все, миниатюры не видно) Но спасибо помощь,быстро ответили)

    • Александр6 октября 2015 в 10:10 #

      Здравствуйте! После обновления wordpress до 4.3.1 повылетатли все превьюшки в постах, а если точнее, то превьюшки прописывались в произвольном поле как thumbnail. После обновления это поле вообще пропало, а вместо картинок пустые окошки. Как сделать чтобы восстановились превью, т.е. из свободного поля перешли в раздел СОЗДАТЬ МИНИАТЮРУ? Спасибо.

      • Миша7 октября 2015 в 08:10 #

        Здравствуйте!
        Вопрос такой — остались ли у вас данные по этим превьюшкам в базе?

        • Александр7 октября 2015 в 08:10 #

          Они в каждом посте по-прежнему прописаны в свободном поле, если не удаляя этого поля создать миниатюру, то превьюшка все равно не работает, пока не удалить это поле вообще из поста. Сайту около пяти лет, сайт спортивный, статей ну ооооооочень много, вручную все переделывать просто смерть...

          • Миша7 октября 2015 в 08:10 #

            Ну тут нужно писать код, который: на основе URL картинок из произвольных полей, будет переносить их во вложения, после этого присваивать каждое вложение как миниатюру и под конец удалять произвольное поле..

            Но можно сделать чтобы код работал на основе миниатюр, а если не задано - на основе произвольного поля.

            Понимаю, что конкретики вам не дал, но тут нужно уже смотреть и править код. Если хотите, могу вам помочь, скиньте мне адрес сайта по email.

            • Никита15 ноября 2015 в 21:11 #

              У меня нормальные миниатюры, при переходе на новость (нажатии на миниатюру) все отображается отлично, но "миниатюра" уже внутри самой новости слишком огромна. Как ее можно исправить, каким кодом и в каком файле обычно это прописывают?

  • Александр25 августа 2014 в 14:08 #

    При удалении это функции миниатюра в самом посте становиться натуральной величины, эта функция отвечает лишь за размер миниатюры в посте, поэтому не стал заморачиватся)

  • Александр25 августа 2014 в 15:08 #

    Подскажите лучше, я тут в коде где-то накосячил, а где не знаю, теперь кнопки не видны, например под каждым превью поста была кнопка подробнее, она теперь есть но ее не видно если провести курсором в правом углу то появиться возможность нажать, где может быть проблема? сайт - http://vipchange.ru/

  • Александр25 августа 2014 в 16:08 #

    А где примерно смотреть, какую часть кода, если я вам скину весь CSS можете подсказать?

  • Александр25 августа 2014 в 21:08 #

    ага, спасибо, все хорошо)

  • Антон22 сентября 2014 в 14:09 #

    Подскажите, пожалуйста, можно ли установить миниатюру записи в качестве ее фона. Таким образом, чтобы сама запись была сверху.

    • Миша22 сентября 2014 в 18:09 #

      Да, можно :)
      Нужно использовать свойство CSS background-image, а для того, чтобы вывести URL миниатюры, вот это:

      $atts = wp_get_attachment_image_src( get_post_thumbnail_id() );
      echo $atts[0];

      Описание этих функций есть в кодексе у меня на сайте.

  • Евгений17 октября 2014 в 01:10 #

    как сюда же вывести не только заголовок поста но и рубрику к которой этот пост относится ? получается вывести все (автора, дату и тд) кроме рубрики (((
    спасибо

  • Евгений17 октября 2014 в 22:10 #

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

    <div class="work">
    		<h2><span style="background-color:<?php echo ot_get_option( '' ); ?>;">Колонки</span></h2>
    		<ul>
    		<?php
    		$args = array( 'post_type' => 'pumpkin', 'posts_per_page' => 3 );
    		$loop = new WP_Query( $args );
    		while ( $loop->have_posts() ) : $loop->the_post();
    			echo '<li>';			
    			echo '<a href="';
    			the_permalink();
    			echo '" alt="">';
    			echo '<div class="overlay" style="background-color:'.ot_get_option( 'main_colour' ).';"></div>';
    			the_post_thumbnail('flozo-thumb');	
    			echo '<h3 style="border-bottom:2px solid #D2691E;">';
    			the_title(); the_time("j.m.y"); 
    			echo '</h3>'; echo'<h3 style="border-bottom:2px solid #D2691E;">'; echo '</h3>';?>
                            <div align="justify"><?php echo limit_words(get_the_excerpt(), '15'); 
    			echo '...</a>';
    			echo '</li>';
    		endwhile;
    		?>
     
    		</ul>
    		</div>
  • Александр28 ноября 2014 в 21:11 #

    Здравствуйте! Помогите разобраться, а то мозг уже кипит)
    Миниатюры отображались внутри поста, я изменил код они там пропали, но остались в категориях вот так http://f-picture.net/lfp/s56.radikal.ru/i152/1411/f5/7470a72b78d1.jpg/htm
    Как их от туда убрать, а то не красиво получается, и миниатюры и сразу фото из поста, миниатюры нужны только для "похожих записей"
    Был вот такой код

     <?php // Post featured image 
        if(has_post_thumbnail())  { 
            if (!is_single()){ ?><a href="<?php the_permalink(); ?>" title="<?php printf( $SMTheme->_( 'permalink' ), the_title_attribute( 'echo=0' ) ); ?>"> <?php } 
                the_post_thumbnail( 
                    array($SMTheme->get( 'layout', 'imgwidth' ), $SMTheme->get( 'layout', 'imgheight' )), 
                    array("class" => $SMTheme->get( 'layout','imgpos' ) . " featured_image") 
                ); 
            if (!is_single()){ ?></a><?php }

    Изменил на этот

    <?php // Post featured image 
        if(has_post_thumbnail())  { 
            if (!is_single()){ ?><a href="<?php the_permalink(); ?>" title="<?php printf( $SMTheme->_( 'permalink' ), the_title_attribute( 'echo=0' ) ); ?>"> <?php } 
               if (is_category()) {the_post_thumbnail( 
                    array($SMTheme->get( 'layout', 'imgwidth' ), $SMTheme->get( 'layout', 'imgheight' )), 
                    array("class" => $SMTheme->get( 'layout','imgpos' ) . " featured_image") 
                );} 
            if (!is_single()){ ?></a><?php }

    Подскажите, что еще поменять в нем.
    Буду очень благодарен если поможете!
    Заранее спасибо!

    • Миша29 ноября 2014 в 00:11 #

      Здравствуйте!
      Так вы добавили условие is_category(), что значит — отображать только на страницах категорий :)

      • Александр29 ноября 2014 в 07:11 #

        Доброе утро! Спасибо, что уделили внимание.
        Я новичок в этом деле.
        По поводу категорий я понял, что в этом причина, но как изменить код не знаю, менял и удалял ... ошибку выдает, пол сайта не отображается.
        Может скобку не там ставлю или еще что.
        Если вас не затруднит, может подскажите, как "эту категорию" убрать?!
        Буду благодарен!
        Заранее спасибо!

        • Миша29 ноября 2014 в 10:11 #

          Доброе утро!
          Эти строки:

          if (is_category()) {the_post_thumbnail( 
                          array($SMTheme->get( 'layout', 'imgwidth' ), $SMTheme->get( 'layout', 'imgheight' )), 
                          array("class" => $SMTheme->get( 'layout','imgpos' ) . " featured_image") 
           );}

          меняем на эту:

          the_post_thumbnail(array($SMTheme->get( 'layout', 'imgwidth' ), $SMTheme->get( 'layout', 'imgheight' )),array("class" => $SMTheme->get( 'layout','imgpos' ) . " featured_image"));
          • Александр29 ноября 2014 в 10:11 #

            К сожалению не помогло, в категориях миниатюры не убрались, но еще и внутри поста добавились, как изначально было((((

            • Миша29 ноября 2014 в 10:11 #

              По этому кусочку кода невозможно понять, что к чему. Но так, как у вас сейчас, я думаю правильно.

              А чтобы убрать миниатюры из категорий и постов, вам надо смотреть другие файлы темы.

  • Наталья26 декабря 2014 в 15:12 #

    Спасибо вам огромное!!! Поставила новый шаблон на сайт и что-то совсем запуталась ... Очень помогли!

  • Костя30 декабря 2014 в 09:12 #

    Добрый день,
    Подскажите (в чем идея), плз, зачем миниатюра для страницы (статичной стр.)?
    Где и как ее можно вывести?

    • Миша31 декабря 2014 в 08:12 #

      Добрый день!
      Вам нужно ещё раз перечитать пост — в нём есть все ответы или я не совсем понимаю вопрос?

  • Ольга17 января 2015 в 16:01 #

    Здравствуйте! Подскажите, а как можно добавить к посту миниатюру, которая представляет собой картинку, физически расположенную на другом сервере (к примеру, пикасогугл)? При добавлении миниатюры у меня появляется окно с галереей изображений, загруженных на мой хостинг или предлагается загрузить картинку на мой хостинг и вставить в виде миниатюры, но вот указать миниатюру по ссылке с другого сайта... такой возможности нет.

    • Миша18 января 2015 в 07:01 #

      Добрый день!
      Заходим на страницу редактирования поста, жмём кнопку «Добавить медиафайл», а потом «Вставить с сайта».

      • Ольга18 января 2015 в 09:01 #

        Но в этом случае картинка просто вставляется в пост, а не создается как миниатюра, и не выводится как миниатюра к записи на странице с категориями (к примеру).

        • Миша19 января 2015 в 08:01 #

          Она в медиафайлы не добавляется значит? Тогда наверн стандартными средствами WP сделать это не получится.

  • Anna30 января 2015 в 00:01 #

    При попытке задать миниатюру к портфолио выдаёт в начале списка пустой файл, при этом ни загружаемые ни старые картинки не задаются в качестве миниатюры.При этом просто в медиабиблиотеку фотки подгружаются и в записи выкладываются и видно их. В чем может быть проблема?

    • Миша30 января 2015 в 09:01 #

      К сожалению не сталкивался с такой проблемой — сходу даже не скажу. Файлы движка не изменялись?

      Могу порекоммендовать переустановить / обновить WordPress.

  • artem30 января 2015 в 04:01 #

    стоит ли выводить миниатюру в начале поста, сразу после тайтла перед текстом? будет ли такое расположение миниатюры сказываться негативно на поисковой оптимизации

  • Евгений2 марта 2015 в 01:03 #

    Приветствую! Хорошая и полезная статья, спасибо.

    Несмотря на достаточно подробные инструкции по работе с миниатюрами для записей и страниц, которые есть в интернете, все они относятся к глобальным настройкам, которые применяются к отображению/скрытию миниатюр на всем сайте или в шаблонах типов постов/таксономий и др.

    У меня же возникла более специфичная задача: сделать возможность вкл./откл. миниатюры в админке, чтобы она не выводилась во фронтенде сайта для определенной записи/страницы. При этом для этой записи/страницы она загружена и установлена (чтобы использовать в других целях).

    Должен быть php сниппет для решения такой задачи, вставляемый в functions.php текущей темы, но найти его пока не удалось )

    Кто-нибудь может помочь справиться с этой задачей? Заранее благодарю!

  • Евгений2 марта 2015 в 18:03 #

    Благодарю за подсказку. Да, это должно сработать, но у меня пока не получилось. Попробовал вариант добавления с помощью add_meta_box() по вашей инструкции. Сам метабокс в админке появился, но отключение не сработало.

    Не смог понять, что делает этот код

    wp_nonce_field( basename( __FILE__ ), 'seo_metabox_nonce' );

    и как завершить работу кода, конкретнее, что указать здесь

    update_post_meta($post_id, 'seo_title', esc_attr($_POST['seotitle']));
    update_post_meta($post_id, 'seo_noindex', $_POST['noindex']);

    В теме, которую я использую миниатюра записи/страницы выводится так

    <?php 
    $background_url = get_post_meta($post->ID,'_thumbnail_id',false); // Get Image ID 
    if( $background_url ) {
    	$alt = get_post_meta($background_url, '_wp_attachment_image_alt', true); // Alt text of image
    	$background_url = wp_get_attachment_image_src($background_url[0], 'fullslideshownc', false);  // URL of Featured Full Image
    	$background_url = $background_url[0];
    } ?>
    <?php echo $background_url ? 'has-background' : 'no-background'; ?>">
  • Миха5 марта 2015 в 20:03 #

    Подскажите, пожалуйста, как выводить миниатюры в слайдер, если я миниатюры не создавал никогда для постов. Как можно вместо миниатюр в слайдер выводить, например, первую картинку поста? На что надо поменять строчку <a href=""> ? Если к посту задать миниатюру, то работает. Но это мне надо будет руками каждую запись редактировать, убирая первые картинки и т д.

    Вот более полный код блока вывода миниатюр в слайдер.

  • Миха5 марта 2015 в 20:03 #

    Попытка номер 2.
    Вот код строчки, которая выводит миниатюру и которую надо поменять:

    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'wide-image' ); ?></a>

    Код слайдера:

    <!-- Front Page Slider -->
    <div class="smartlib-front-slider">
    	<ul class="slides">
    		<?php
    		while($slider_news->have_posts()){
    			$slider_news->the_post();
    			?>
    			<li>  <article id="post-<?php the_ID(); ?>" <?php post_class('row'); ?>>
    				<div class="columns large-10 smartlib-slider-image-column">
    					<?php
     
    					if ( '' != get_the_post_thumbnail() ) {
    						?>
    						<div class="smartlib-featured-image-container">
     
    							<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'wide-image' ); ?></a>
     
     
    						</div>
    						<?php
    					}
    					?>
    • Миша6 марта 2015 в 11:03 #

      Добрый день!
      1) Вытащить все изображения поста при помощи функции get_post() (в качестве параметра post_parent нужно указать ID этого поста).
      2) Затем из полученного массива берем ID первого элемента — это и есть ID нужного нам изображения.
      3) Затем в ход идёт wp_get_attachment_image_src().

  • Роман8 марта 2015 в 22:03 #

    Добрый день.
    Подскажите пожалуйста - существует ли возможность перед каждым постом ставить свою изображение?

    Т.е.:
    Изображение
    Заголовок поста
    Тело поста.

  • Анастасия11 апреля 2015 в 06:04 #

    Здравствуйте, а не подскажите, что лучше:
    Я в статьях загружаю картинки и вручную уменьшаю до ширины 400, чтоб открывать через лайтбокс полный
    Или лучше будет создать размер миниатюры и выбирать уже из списка размеров?

    • Миша11 апреля 2015 в 08:04 #

      Здравствуйте!
      Если вас это ничуть не затрудняет лучше делать вручную, но я бы на вашем месте использовал отдельный размер.

  • Gerko14 апреля 2015 в 10:04 #

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

    https://dl.dropboxusercontent.com/u/28111117/blog_pict01.png
    Это миниатюра выглядит нормально.

    https://dl.dropboxusercontent.com/u/28111117/blog_pict02.png
    Вот так миниатюра выглядит в самой заметке.

    Код из functions.php:

    <?php
    /**
     * Register our sidebars and widgetized areas.
     *
     */
    function arphabet_widgets_init() {
     
    	register_sidebar( array(
    		'name' => 'Виджеты: Зона хэдера',
    		'id' => 'home_right_1',
    		'before_widget' => '<div id="arphabet">',
    		'after_widget' => '</div>',
    		'before_title' => '<h2 class="rounded">',
    		'after_title' => '</h2>',
    	) );
    }
    add_action( 'widgets_init', 'arphabet_widgets_init' );
    ?>
    • Миша16 апреля 2015 в 15:04 #

      Добрый день!
      Первое, что напрашивается на ум - посмотреть, может в стилях что-то не то.

  • Gerko16 апреля 2015 в 17:04 #

    Добрый день. Да стили тоже были проверены. Но проблема была в другом, оказалось что текущая тема плотно завязана на фрэймворк. Вот уже в стилях этого фрэймворка и удалось отключить показ миниатюр, да возможно костыль, но работает.

  • Женя16 апреля 2015 в 20:04 #

    Здравствуйте! Можно ли добавить миниатюру в место главного изображения в теме Twenty Twelve

    • Миша17 апреля 2015 в 08:04 #

      Здравствуйте!
      А что вы подразумеваете под главным изображением?

      • Женя17 апреля 2015 в 13:04 #

        Изображение над заголовком публикации

        • Миша18 апреля 2015 в 08:04 #

          В качестве этого изображения и должна же ведь использоваться миниатюра. У вас там что выводится?

          • Женя18 апреля 2015 в 09:04 #

            По умолчанию выводится так: http://joxi.ru/5mdnegkS5wDlA1. Если вручную вставить в текст публикации изображение по размеру как миниатюру, то получается так: http://joxi.ru/D2PyvzjcxO0pA3, но если использовать плагин для вывода последних новостей, то он первое изображение видит и выводит как миниатюру, а второе нет.

            • Миша18 апреля 2015 в 13:04 #

              Ну вот в первом случае у вас и выводится как миниатюра.
              Во втором случае у вас выводится изображение из публикации.
              А в случае с плагином - он просто берет первое по порядку изображение поста (порядок меняется в загрузчике).

  • Марина25 июня 2015 в 19:06 #

    Уважаемый Миша! Добрый день! Скажите, вы сможете помочь ( не за оплату).
    Проблема. Есть сайт polnymledi.ru Нашла тему, которая мне очень понравилась, простая, светлая и т д. Называется wp-fanzone (установлена через установку тем wordpress в админке сайта). Все прекрасно. НО!!! Никак не вывести миниатюры на главную с первой картинки поста.
    Если саму картинку заливаю на сайт и через " установить миниатюру" , то она на главной выводится. А вот если я хочу вывести миниатюру с первой картинки поста, которая залита на Яндекс фотки, то уже НИКАК не выводится.

  • Марина25 июня 2015 в 19:06 #

    Прошу прощения. Не дописала.
    Так вот. Что-то не верно делаю наверно. Так как, в другой теме все получилось.
    Очень надеюсь на ответ. Спасибо. Марина.

  • Марина26 июня 2015 в 16:06 #

    Миша! Здравствуйте! Пожалейте тетеньку))) Я до всего дохожу сама уже 8 лет С НУЛЯ!
    Wordpress начала осваивать недавно ( до этого webasyst и джумла). Поэтому не все еще понимаю. Практически методом тыка пока.
    Миша, если не трудно куда это

    if( has_post_thumbnail() ) { // проверяем
    	the_post_thumbnail( 'full' ); // если да - выводим
    } else { // если нет
    	$parametry = array(
    		'numberposts' => 1, // нам нужно только одно изображение
    		'order'=> 'ASC', // по возрастанию
    		'orderby' => 'menu_order' // по умолчанию изображения сортируются по дате, а в данном случае - по порядку, установленному в админке
    		'post_type' => 'attachment', // тип поста - вложение
    		'post_mime_type' => 'image', // тип вложения - изображение
    		'post_parent' => $post->ID, // тут указываем ID родительского поста, в данном примере - текущий пост
     
    	);
    	$izobrazhenija = get_children( $parametry, ARRAY_N );  // возвратит Array ( [0]... 
    	$pervoe = wp_get_attachment_image_src( $izobrazhenija[0]['ID'], 'full' );
    	echo '<img src="' . $pervoe[0] . '" />';
    }

    вставлять? В файл functions.php???
    Если я верно думаю, то тогда еще вопрос Как вставить в тело, какой строчкой ? Опять же, какой файл?
    Если по принципу главная страница, то понятно index.php, а если нет???
    А если нет, то куда? Тема wp-fanzone оказалась очень капризная. 4 дня пытаюсь что-то сделать и ни с места. Миниатюры не проявляются. Только с плагином. Но с плагином не хочу, у меня мало места для сайта.
    Еще раз надеюсь на подробный ответ -ПОЖАЛУЙСТА!!! . Спасибо. Марина.

  • Марина27 июня 2015 в 00:06 #

    Хотя б в какой файл вставлять? Посмотрите пожалуйста polnymledi.ru
    На главной только вставленные в статьи миниатюры ( заданные и закаченные на сайт)
    А это нагружает сайт

  • Марина27 июня 2015 в 01:06 #

    Отчет)))
    Поставила в файл index - отобразились только именно закаченные картинки и под статьями ( статьи как-бы сверху картинок.
    Поставила в файл content - проявились те же закаченные картинки но уже в двойном экземпляре.
    На главной упорно ни одна из картинок поста не проявляется. Что делать???
    Марина.

    • Миша27 июня 2015 в 21:06 #

      На главной же у вас выводятся миниатюры? Поищите, где они есть в коде и потом замените на мой код.

  • Марина28 июня 2015 в 02:06 #

    Доброй ночи Миша! На главной выводятся, НО только если миниатюру закачаю на сайт. А вот если нет ее в файловом менеджере, то она не выводится.
    Ваш код вставляла куда только можно и нельзя))) НИКАК не выводятся миниатюры ( если они не закачены)
    Может я не верно поняла вас, но как я понимаю нужен вывод миниатюр с первой картинки поста. А первая картинка постов у меня находится на Яндекс фотках. Была у меня изначально тема PR Pin и вот там код ниже сработал

     // вывод миниатюры с первой картинки поста
    function catch_that_image() { global $post, $single, $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)){ //Defines a default image
        $first_img = "/images/default.jpg";
      }
    return $first_img;
    }

    в тело вставляется так или немного по другому может

    <a href="<?php the_permalink(); ?>"><!-- миниатюра записи --> <div class="posttitle"><?php the_post_thumbnail(); ?></div></a>

    Так вот. Увидела ваш универсальный код и обрадовалась. Но и он не сработал на этом шаблоне. Только с помощью плагина. А плагин я не хочу, он грузит сайт.
    Может что-то еще подскажите?
    Спасибо.

  • AraM14 июля 2015 в 02:07 #

    Спасибо братан !!! Помог

  • Наталья6 сентября 2015 в 18:09 #

    Здравствуйте!

    У меня так загружаются миниатюры - см. скриншот.

    https://www.dropbox.com/s/keiuqxrmwbi3hap/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202015-09-06%2017.37.03.png?dl=0

    Как правильно задать категорию для миниатюры? Спасибо.

    • Миша7 сентября 2015 в 09:09 #

      Здравствуйте!
      Не понял вопроса..

      • Наталья10 сентября 2015 в 10:09 #

        Вопрос отменяется, потому что я его неправильно поставила.

        Спрошу по-другому. У меня создаются для миниатюр страницы вложения. Я об этом узнала, когда Гугл их проиндексировал.

        Такая страница вложения выглядит как обычная запись вордпресс с одной единственной небольшой миниатюрой без текста.

        Эти страницы вообще должны создаваться? Они нужны?

  • Наталья9 сентября 2015 в 01:09 #

    Здравствуйте!

    Поисковики проиндексировали на моем сайте тысячи страниц вложений attachmet. Эти страницы вообще нужны как таковые? Или их нужно удалить? Там дубли картинок.

  • Алексей18 сентября 2015 в 17:09 #

    Подскажите можно ли вывести миниатюры в статью и подключить лайтбокс. А при клике на миниатюру открывалась картинка в полный размер?

  • Наталья21 сентября 2015 в 19:09 #

    Здравствуйте. Вопрос по добавлению миниатюр.

    На моем сайте миниатюры отображаются в анонсах разделов, а также над текстом статьи (записи).

    При загрузке миниатюры мне предлагается несколько вариантов:

    Изображение
    Загруженные для этой записи
    Неприкрепленные

    http://prntscr.com/8iuz0d

    Какой из вариантов выбрать?

    Сейчас картинки находятся в "Изображениях".

  • Ксения19 октября 2015 в 21:10 #

    Подскажите пожалуйста, если миниатюры вдруг стали растягиваться на главной странице? В самих статьях все хорошо. Раньше такого не было! Ladystart.ru, спасибо!

    • Миша20 октября 2015 в 07:10 #

      В файле style.css на 1045 строчке нужно удалить max-height: 170px; — это решит проблему с растягивающимися изображениями на главной.

      • Ксения20 октября 2015 в 12:10 #

        Большое спасибо, Михаил! Помогло! Теперь текст вниз уехал на главной и в рубриках. В записях нормально все. Тоже в стилях темы нужно исправлять? Не могу там найти, как это должно называться :(((

        • Миша21 октября 2015 в 08:10 #

          Да, это всё в стилях. Вы через правую кнопку мыши в Google Chrome кликните на уехавший элемент и всё найдёте)

          • Ксения21 октября 2015 в 21:10 #

            Спасибо. Найти-то его нетрудно)) Как выровнять это все, поднять или ограничение какое то поставить??? https://ladystart.ru/retsepti вообще какой-то ужас.

            • Миша22 октября 2015 в 07:10 #

              У вас там уже целый набор шаблонных стилей, которые не так-то просто подстроить под то, что нужно))

              Попробуйте удалить height: 400px!important; на 1042й

              • Ксения22 октября 2015 в 12:10 #

                УРА!!! Все нормально стало!!! Спасибо!!! А нужно ли этот набор шаблонных стилей убрать? Пока не поздно. Или лучше не трогать?

  • Денис20 октября 2015 в 15:10 #

    Подскажите пожалуйста, а каким образом убрать ссылку из миниатюры? Имею к примеру вот такую картину, что тут лишнее? Или никак? Заранее спасибо.

    <li><div id="cell"><a rel="nofollow" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumbnail'); ?><?php the_title();?></a></span><br>
    </div></li>
    • Миша21 октября 2015 в 08:10 #

      Что за код вы мне дали?) Просто удаляете тег <a> и все дела.

    • Миша21 октября 2015 в 08:10 #
      <li><div id="cell"><?php the_post_thumbnail('thumbnail'); ?><?php the_title();?></span><br>
      </div></li>
      • Денис21 октября 2015 в 10:10 #

        Спасибо за ответ, нет вы не поняли, не ссылку под миниатюрой, а ссылку именно с миниатюры, чтобы она не была кликабельная, но ссылка под миниатюрой чтоб осталась.

  • Роман25 октября 2015 в 22:10 #

    Михаил, в продолжение растягивающихся миниатюр на главной. У меня тема MH Newsdesk lite. Из последнего поста берётся миниатюра и растягивается во всю ширину главной страницы. Выглядит ужасно. Можно ли как-то её уменьшить? Прошу помочь, поиск результатов не дал, не знаю что делать :(

  • Елена22 ноября 2015 в 17:11 #

    Здравствуйте. Помогите, пожалуйста, решить проблему. У меня на главной сайта съезжает миниатюра. Выглядит это так: Если зайти на сайт через админку, все миниатюры на главной отображаются нормально в ряд. Подскажите, где искать причину и как сделать так чтобы миниатюры для посетителей отображались в ряд? Заранее, спасибо!

  • Елена22 ноября 2015 в 17:11 #

    https://yadi.sk/i/UC8A4156keP6o

  • Jake17 декабря 2015 в 15:12 #

    Добрый день! Подскажите, пожалуйста, как сделать, чтобы в анонсе поста на главной странице и в виджете Популярные Посты миниатюра записи отображалась, а а самой статье миниатюра отсутствовала, т.к. на ее место нужно поставить рекламный блок?

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...