В плагине для ускорения работы с изображениями, загрузками и мета полями используется All Inclusive который я выделил в отдельный плагин описание метода.
Для того, чтобы задействовать эту функцию достаточно включить опцию в настройках плагина “Применять шаблоны постов”, устанавливать All Inclusive не нужно он уже включен в ads-wordpress в виде функции фильтра ads_addImgMeta. Для сравнения WP функция the_post_thumbnail для получения 1 миниатюры создает 2 SQL запроса то есть если на странице 10 записей это 10*2 = 20 sql !? Мой же метод дает всего 2 дополнительных SQL но помимо картинок добавляет все мета поля для всех записей.
Настоятельно рекомендую пользоваться моим методом это сэкономит вам и время и ресурсы сервера.
Итак как ним воспользоваться привожу примеры.
Во первых советую в теле главного цикла советую распечатать переменную $post сразу после старта главного цикла:
<? php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
1 | <? php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> |
вставляем заменив пре на pre 🙂
<?echo ‘<pre>’; print_r($post);echo ‘</пре>’;?>
1 | <?echo ‘<pre>’; print_r($post);echo ‘</пре>’;?> |
Итак думаю всем хорошо видно, что мета поля попадают в массив $post->meta , а атачменты $post->files
Вот например, чтобы проверить и распечатать номер телефона можно сделать так
<? if( $post->meta[‘ads_phone’]) echo ‘Телфон: ‘ . $post->meta[‘ads_phone’];?>
1 | <? if( $post->meta[‘ads_phone’]) echo ‘Телфон: ‘ . $post->meta[‘ads_phone’];?> |
Проверить и вывести миниатюру для первой картинки со ссылкой на полную картинку если она есть, если нет вывести заглушку.
<? if($post->files[0]->thumbnail) echo ‘<a href=»‘.$post->files[0]->full.'»><img src=»‘.$post->files[0]->thumbnail.'» /></a>’; else echo ‘<img src=»/zaglushka.jpg» />’; ?>
1234 | <? if($post->files[0]->thumbnail) echo ‘<a href=»‘.$post->files[0]->full.‘»><img src=»‘.$post->files[0]->thumbnail.‘» /></a>’;else echo ‘<img src=»/zaglushka.jpg» />’;?> |
Проверить есть ли какая-нибудь картинка в объявлении и вывести ее миниатюру со ссылкой на само объявление:
<?if(sizeof($post->files)): $img = array_shift($post->files);?> <a href=»<?%20the_permalink()?>»><img src=»<?=$img->thumbnail?>» /></a> <?endif?>
123 | <?if(sizeof($post->files)): $img = array_shift($post->files);?><a href=«<? the_permalink()?>«><img src=«<?=$img->thumbnail?>« /></a><?endif?> |
Можно комбинировать со стандартным выводом миниатюр the_post_thumbnail
<? if($post->files[0]->thumbnail) echo ‘<img src=»‘.$post->files[0]->thumbnail.'» />’; elseif($html = get_the_post_thumbnail(‘thumbnail’) ) echo $html; else echo ‘<img src=»/zaglushka.jpg» />’; ?>
12345 | <? if($post->files[0]->thumbnail) echo ‘<img src=»‘.$post->files[0]->thumbnail.‘» />’;elseif($html = get_the_post_thumbnail(‘thumbnail’) ) echo $html;else echo ‘<img src=»/zaglushka.jpg» />’;?> |
Если загруженный файл не картинка а архив или что-то еще пользуем параметр guid или лучше attachment_url. Для примера обработаем все загруженные файлы и выведем для картинок миниатюры а для других файлов ссылки на закачку
foreach($post->files as $key=>$file){ if( preg_match(‘~image/~’, $file->post_mime_type) ) echo ‘<img src=»‘.$file->thumbnail.'» /><br />’; else echo ‘<a href=»‘.$file->attachment_url.'»>Загрузить файл</a><br />’; }
123456 | foreach($post->files as $key=>$file){if( preg_match(‘~image/~’, $file->post_mime_type) ) echo ‘<img src=»‘.$file->thumbnail.‘» /><br />’;else echo ‘<a href=»‘.$file->attachment_url.‘»>Загрузить файл</a><br />’;} |
В этом примере мы сначала с помощью регулярного выражения определяем тип файла по полю post_mime_type если он начинается с image/ значит это картинка и мы печатаем миниатюру если нет выводим ссылку используя параметр attachment_url.
Наверное здесь самым сложным будет не запутаться где массив а где свойства объекта еще раз повторю
Доступ к мета полям записи $post->meta[‘имя поля’]
К файлам
$post->files[0]->attachment_url прямая ссылка
$post->files[0]->guid первый файл параметр guid тоже самое прямая ссылка
$post->files[1]->thumbnail второй файл миниатюра
$post->files[2]->medium третий файл средняя миниатюра
$post->files[3]->full третий файл полная картинка
Начиная с версии 3.0.17 добавил создание иконок для файлов типа архивы, exe, документы и т.д.
Иконки находятся в любом из полей thumbnail | medium | full везде одинаковые.
можно немного переписать предыдущий пример добавить вывод иконок вместо текста
<? foreach($post->files as $key=>$file){ if( preg_match(‘~image/~’, $file->post_mime_type) ) echo ‘<img src=»‘.$file->thumbnail.'» /><br />’; else echo ‘<a href=»‘.$file->attachment_url.'»><img src=»‘.$file->thumbnail.'» /></a><br />’; } ?>
12345678 | <?foreach($post->files as $key=>$file){if( preg_match(‘~image/~’, $file->post_mime_type) ) echo ‘<img src=»‘.$file->thumbnail.‘» /><br />’;else echo ‘<a href=»‘.$file->attachment_url.‘»><img src=»‘.$file->thumbnail.‘» /></a><br />’;}?> |
И еще напомню есть функция ads_gallery