Jump to content
Sign in to follow this  
zverolom

Генерация миниатюр.

Recommended Posts

Всем привет.
Ребята, подскажите как решить проблему с миниатюрами, а точнее с их автоматической генерацией.
На сайте уже 600 записей и к всем необходимо превью страницы. В ручную все можно сделать, но очень долго и кропотливо.
Перебрал кучу статей из поиска, пробывал различные плагины, не выходит.
Официальный модуль - Auto Post Thumbnail, почему-то не справляется с данной задачей.

Возможно кто-то сталкивался с сие проблемой, пожалуйста, подскажите.
 
WordPress 4.5.3

Share this post


Link to post
Share on other sites

Вроде как вам нужен 

Regenerate Thumbnails

 

P.S. Упс. Не то... надо подумать

 

P.P.S. А внутри публикаций есть фотографии?

Share this post


Link to post
Share on other sites

Вроде как вам нужен 

Regenerate Thumbnails

 

P.S. Упс. Не то... надо подумать

 

P.P.S. А внутри публикаций есть фотографии?

да, в каждой новости есть по 5-8 фото..

думал выдернуть с первой фото превью, брал код с паблика, сайт вообще блокировало и не работало

Share this post


Link to post
Share on other sites

Тогда Auto Post Thumbnail. Но фотографии должны быть на вашем сайте, а не грузится удаленно. Если они удаленно (не на вашем сайте), вы должны перекачать их к себе (тоже есть пакетный плагин)

Share this post


Link to post
Share on other sites

Тогда Auto Post Thumbnail. Но фотографии должны быть на вашем сайте, а не грузится удаленно. Если они удаленно (не на вашем сайте), вы должны перекачать их к себе (тоже есть пакетный плагин)

Я уже писал выше, что пробывал сие плагин -Auto Post Thumbnail.
Фото все на сервере находятся. 
С публикации убрал все статьи. Оставил только одну.
Запускаю плагин -  Auto Post Thumbnail обрабатывает каких-то 17 статей, но и на них нет миниатюры
 
P.s. Опубликовал и 100 новостей, обработал плагинов. В итоге нет миниатюр у статей, хоть плагин показыват что обработал 100 статей
Edited by zverolom

Share this post


Link to post
Share on other sites

У вас картинки как загружены?

1) Просто в медиабиблиотеку и затем вставлены в статью;

2) Загружены в библиотеку при постинге материала, то есть картинки прикреплены к статье

Share this post


Link to post
Share on other sites

У вас картинки как загружены?

1) Просто в медиабиблиотеку и затем вставлены в статью;

2) Загружены в библиотеку при постинге материала, то есть картинки прикреплены к статье

Как раз до Вашего вопроса увидел неувязочку.
 
Получается таким образом:
Материал загружался через ftp клиент.
Статьи csv файлом.
 
Сейчас захожу в медиатеку и вижу там только старые изображение, которые были для тестового материала.
А новых нет, вообще.
 
Те картинки что есть расположены по адресу: /wp-content/uploads/2016/07
/wp-content/uploads/2016/08
А новые картинки загруженные через ftp - /wp-content/uploads/content
 
Но при публикации новостей картинки отображаются корректно.

Share this post


Link to post
Share on other sites

Поэтому плагин некорректно отработал. Точнее результат не тот, что Вы ожидали. Он скорее всего смотрит, какие картинки прикреплены к статье, берёт ID первой прикрепленной картинки и устанавливает её миниатюрой. В Вашем случае, у картинок нет ID, так как они не в медиабиблиотеке, о них движок как бы не знает. Вот ничего и не получается в данном случае. Надо искать другое решение. Увы, быстрым взглядом я не нашёл готовой функции в WP, которая бы позволила прикрепить миниатюру с произвольным url к записи. Попозже ради фана попробую написать её.

Share this post


Link to post
Share on other sites

Поэтому плагин некорректно отработал. Точнее результат не тот, что Вы ожидали. Он скорее всего смотрит, какие картинки прикреплены к статье, берёт ID первой прикрепленной картинки и устанавливает её миниатюрой. В Вашем случае, у картинок нет ID, так как они не в медиабиблиотеке, о них движок как бы не знает. Вот ничего и не получается в данном случае. Надо искать другое решение. Увы, быстрым взглядом я не нашёл готовой функции в WP, которая бы позволила прикрепить миниатюру с произвольным url к записи. Попозже ради фана попробую написать её.

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

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

их больше 4000 тыс это точно.

 

Еще в мысль пришла мысля:

Загрузка всех картинок заново через медиатеку.

Замена пути к картинкам в статьях.

Только будут ли картинки прикреплены к записям?

Share this post


Link to post
Share on other sites

Еще в мысль пришла мысля:

Загрузка всех картинок заново через медиатеку.

Замена пути к картинкам в статьях.

Только будут ли картинки прикреплены к записям?

 

Программирование придумали, чтобы решать проблемы, а не создавать их :-) Если просто взять и все картинки загрузить в медиабиблиотеку, то они будут иметь каждая свой ID, вот только движок не будет знать, какая картинка к какой записи имеет отношение. Это логично, не так ли? Картинку надо загружать на странице с самой записью, тогда она и ID получит и взаимосвязь установит.

 

Как я вижу решение проблемы. Получаем все записи и циклом начинаем каждую смотреть. Сразу проверяем, если уже есть миниатюра, то следующую запись начинаем смотреть. Если в след. нет миниатюры, то сканируем контент на картинки, собираем их все, берем url первой и загружаем её в медиабиблиотеку и сразу же прикрепляем к записи (необязательно) + устанавливаем её миниатюрой (обязательно) = профит!

Share this post


Link to post
Share on other sites

Программирование придумали, чтобы решать проблемы, а не создавать их :-) Если просто взять и все картинки загрузить в медиабиблиотеку, то они будут иметь каждая свой ID, вот только движок не будет знать, какая картинка к какой записи имеет отношение. Это логично, не так ли? Картинку надо загружать на странице с самой записью, тогда она и ID получит и взаимосвязь установит.

 

Как я вижу решение проблемы. Получаем все записи и циклом начинаем каждую смотреть. Сразу проверяем, если уже есть миниатюра, то следующую запись начинаем смотреть. Если в след. нет миниатюры, то сканируем контент на картинки, собираем их все, берем url первой и загружаем её в медиабиблиотеку и сразу же прикрепляем к записи (необязательно) + устанавливаем её миниатюрой (обязательно) = профит!

 

На словах конечно все просто, так как вы говорите.

Для этого неких скрипт нужно писать и пускать в работу.

Share this post


Link to post
Share on other sites

На словах конечно все просто, так как вы говорите.

Для этого неких скрипт нужно писать и пускать в работу.

Вопрос: какой путь имеют картинки, которые не прикреплены к статье? Относительный, Абсолютный. Желательно с примером.

Share this post


Link to post
Share on other sites

Кстати, есть у меня сайт, старенький, у него я не делал миниатюры и порой вставлял картинки абы откуда. Чтобы не мучатся, я просто нашёл функцию в сети и чуток подпилил её. Вот она (они):

// Возвращает ссылку на первую картинку из поста
function get_first_post_link_image() {
  global $post;
  $first_img = '';
  $output = preg_match_all("'<img\s+src=\"(\S*.(png|jpg||jpeg|gif))\"'si", $post->post_content, $matches );
  if ( isset( $matches [1][0]) ) {
    $first_img = $matches [1][0];
  }
  
  if(empty($first_img)){
   $first_img = get_template_directory_uri() . "/dleimages/no_image.jpg";
  }
  return  esc_url( $first_img );
}

// Возвращает первую картинку из поста
function get_first_post_image() {
  global $post;
  return sprintf( '<img src="%s" alt="%s">', get_first_post_link_image() , esc_attr($post->post_title) );
}

// Показывает первую картинку из поста
function the_first_post_image() {
  echo get_first_post_image();
}

И затем в шаблоне вместо привычной the_post_thumbnail() использую the_first_post_image();

 

P.S.: интересный способ нарисовался. Смысл в том, чтобы перехватывать вызов функции get_post_thumbnail() и подменять её результат своим, если настоящей миниатюры у поста нет. Выглядит это так:

// Подключаемся к хуку генерации миниатюры, проверяем, есть ли настоящая. Если нет - подставляем свой вариант
add_filter('post_thumbnail_html', 'my_post_auto_thumbnail', 10, 5);
function my_post_auto_thumbnail( $html, $post_id, $post_thumbnail_id, $size, $attr ){
	if( ! $html ){
		$html = get_first_post_image( $post_id );
	}
	return $html;
}

// Возвращает первую картинку из поста
function get_first_post_image() {
  global $post;
  return sprintf( '<img src="%s" alt="%s">', get_first_post_link_image() , esc_attr($post->post_title) );
}

// Показывает первую картинку из поста
function the_first_post_image() {
  echo get_first_post_image();
}

У такого есть небольшая проблемка в том варианте, который выше - она будет выводить картинку во весь её размер. Нужно будет в css ей принудительно размеры задавать или же дописать функцию генерации картинки нужного размера, так как это делают такие плагины как kama-thumbnail.

Edited by campusboy

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...