Как вывести первую картинку из поста
У вас в блоге не каждая запись с картинкой в начале? Но вы хотите на главной странице вывести анонсы с картинками.
Выход есть! Мы можем прописать функцию, которая будет извлекать из вашей записи первую попавшуюся картинку. Затем ее можно вывести рядом с анонсом.
Зачем вообще это? Чуток позже вы узнаете, в следующих записях эта функция используется для более широких целей.
Итак, сразу привожу код функции. Вы должны поместить функцию в файл functions.php, который находится в папке с вашей темой wordpress. Вот сам код функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function catch_that_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]; // no image found display default image instead if(empty($first_img)){ $first_img = "/wp-content/uploads/2010/03/103.jpg"; } return $first_img; } |
Как вы видите в первой строке кода само название функции catch_that_image(), которая собственно и извлекает из поста первую картинку посредством регулярной записи. В 11-й строке указана картинка по умолчанию, это очень удобно, когда в записи нет фото (картинки), тогда можно вывести стандартную картинку на которой будет написано “Нет фото”, например.
Сама функция вызывается вот так, это надо прописать в нужном месте в вашем wordpress шаблоне. А рядом можно прикрепить генерируемый анонс поста (как выводить анонс из записи в wordpress блоге).
1 | <img src="<?php echo catch_that_image(); ?>" alt="" /> |
Дальше можно отредактировать отображение картинки с помощью CSS стилей, добавив в код выше класс стиля.
1 | <img class="first-image" src="<?php echo catch_that_image(); ?>" alt="" /> |
Вот примерный CSS код стиля картинки:
1 2 3 4 5 6 7 | .first-image { display: block; //отображаем как блок width: 200px; //ширина 200 пикселей height: 150px; //высота 150 пикселей border: 1px solid #bbb; // рамка серого цвета шириной в 1 пиксель float: left; //выравнивание картинки с левого бока } |
Вот приблизительно так можно отобразить картинку, она отобразится слева от анонса благодаря свойству float.
Но в этом способе есть недостатки. Поэтому эта запись только начало, дальше мы научимся не только выводить первую картинку, но и обрезать ее до нужного размера, выводить похожие, популярные и самые комментируемые записи блога с картинками превьюшками.





about 5 months ago
вот бы еще аналогичных скриптик под joomla, было бы классно. также, для лучшего юзабилити, рекомендуется делать картинку в посте, особенно в превью, чтобы она была ссылкой на полную новость. спасибо за скрипт.
4 месяцев назад
У меня этот скрипт (функция) на WP 2.3.3 выводит почему то не первую картинку из записи, а последнюю, не поможете?
4 месяцев назад
Если бы ты еще писал что куда прописывать. Первый код понятно в functions.php, а вот другие коды куда пихать?
И так почти всюду, код пишешь а в каком файле его прописывать нету.
4 месяцев назад
А что там непонятного? CSS – в CSS файл, функцию в файл functions.php в папке с темой, остальное в шаблон.
3 недель назад
.first-image {
display: block;
width: 30%;
height: 25%;
border: 1px solid #bbb;
float: left;
}
Вот так я предложу оформить css. Просто фиксированная ширина и высота искажает изображение, а процентное соотношение – нет. Посмотрите на моем блоге. ilyaplot.ru