Автор
shin
(@sorashin)
забыл сказать, что очевидное решение с произвольными полями не подходит. человеку придется писать ключ и ссылку.
Помимо миниатюры, можно использовать встроенную галерею записи — получить изображения в виде массива (пример кода) и оформить вывод согласно требованиям.
На одном сайте я тоже пришел к предложенному Сергеем коду, только получал не миниатюры, а URL полных изображений, а дальше их ресайзил с помощью timthumb. Принцип как при использовании произвольных полей.
Автор
shin
(@sorashin)
! я не знал, что можно картинки загружать, но не вставлять. а это именно то, что мне нужно! первым моим решением было именно вставка картинок, удаление их из поста и вывод в другом месте. и мне тоже показалось это не изящным)
и точно также мне потребуется timthumb. спасибо вам обоим огромное!
и теперь у меня есть один глупый вопрос. вы не могли бы мне чуть подробнее объяснить, как это работает? точнее, что оно возвращает? я не программист и пока не совсем понял, что именно мне нужно подставить в качестве пути к изображениям в подобные ссылки:
<img src="timthumb.php?src=/images/default.jpg&h=150&w=150&zc=1" alt="">
Я не знаю насколько это правильно, но я поступил вот так:
<?php
$images = get_children(array('post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC'));
if ( empty($images) ) {
} else {
foreach ( $images as $attachment_id => $attachment ) {
echo '<li>';
echo '<img class="slider_item" src="'.get_bloginfo('template_url').'/scripts/timthumb.php?src='.wp_get_attachment_url($attachment_id, 'full').'&h=75&w=50&zc=1" alt="'.$attachment->post_title.'"/>';
echo '</li>';
}
}
?>
Автор
shin
(@sorashin)
спасибо.
а timthumb на локальном wordpress’е (денвер) будет работать?
Автор
shin
(@sorashin)
отлично, спасибо.
я, возможно, еще появлюсь с очередными глупыми вопросами, когда буду прикручивать все это к шаблону)
Автор
shin
(@sorashin)
да, для поста все отлично работает. теперь у меня вопрос, как это оптимально использоваться для вывода одной картинки. для этого ведь не нужно перебирать весь массив, так? правильно ли я понимаю, что в этом случае мне нужно использовать for вместо foreach? мне кажется, что нет)
то есть внутри поста нужно выводить все картинки, а на главной каталога — только первую. но с проверкой на существование таковых у поста. то ест ьв любом случае условие, но, наверное, без цикла?
Меня тоже интересует этот вопрос, я делал так же как и в предыдущем варианте, а вот как правильно получить 1ю картинку, и например ту которая первая установлена 'orderby' => 'menu_order'
. Тогда бы получилась замена стандартным превьюшкам
Автор
shin
(@sorashin)
надеюсь, что кто-нибудь откликнется еще.
в идеале бы так: с главной брать только первую картинку из поста. а при заходе в пост выводить со второй (на случай, если первую надо хитро кадрировать под дизайн).
на главной можно выводить и штатную превьюшку, но тогда пользователю придется добавлять картинки в два этапа. некрасиво.
Модератор
Yuri
(@yube)
А как насчет добавить параметр «numberposts»=>1 ? 😉
Автор
shin
(@sorashin)
простите за глупость, но к чему этот параметр добавлять? и как бы со вторым вопросом — выводить картинки, начиная со второй?
Модератор
Yuri
(@yube)
К запросу
$images = get_children(array('post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC'));
чтобы получить только один аттач, а не все.
Начиная со второй — параметр ‘offset’.
Матчасть:
Function Reference/get children
Template Tags/get posts
Юрий, а как сделать сброс этого запроса,
«numberposts»=>1
я догадался поставить, но вот когда идет 2а подрядят таких запроса (в записи, сначала вывести одну картинку а потом вывести все картинки), то во втором как и в первом независимо от параметра numberposts выдается 1 картинка.