Про атачменты, миниатюры и мета поля

В плагине для ускорения работы с изображениями, загрузками и мета полями используется 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