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

В плагине для ускорения работы с изображениями, загрузками и мета полями используется All Inclusive который я выделил в отдельный плагин описание метода.
Для того, чтобы задействовать эту функцию достаточно включить опцию в настройках плагина «Применять шаблоны постов», устанавливать All Inclusive не нужно он уже включен в ads-wordpress в виде функции фильтра ads_addImgMeta. Для сравнения WP функция the_post_thumbnail для получения 1 миниатюры создает 2 SQL запроса то есть если на странице 10 записей это 10*2 = 20 sql !? Мой же метод дает всего 2 дополнительных SQL но помимо картинок добавляет все мета поля для всех записей.
Настоятельно рекомендую пользоваться моим методом это сэкономит вам и время и ресурсы сервера.
Итак как ним воспользоваться привожу примеры.
Во первых советую в теле главного цикла советую распечатать переменную $post сразу после старта главного цикла:


вставляем заменив пре на pre :)

  '; print_r($post);echo '';?>

Итак думаю всем хорошо видно, что мета поля попадают в массив $post->meta , а атачменты $post->files
Вот например, чтобы проверить и распечатать номер телефона можно сделать так

meta['ads_phone']) echo 'Телфон: ' . $post->meta['ads_phone'];?>

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

files[0]->thumbnail) echo '';
else echo '';
?>

Проверить есть ли какая-нибудь картинка в объявлении и вывести ее миниатюру со ссылкой на само объявление:

files)): $img = array_shift($post->files);?>


Можно комбинировать со стандартным выводом миниатюр the_post_thumbnail

files[0]->thumbnail) echo '';
elseif($html = get_the_post_thumbnail('thumbnail') )  echo $html;
else echo '';
?>

Если загруженный файл не картинка а архив или что-то еще пользуем параметр guid или лучше attachment_url. Для примера обработаем все загруженные файлы и выведем для картинок миниатюры а для других файлов ссылки на закачку

foreach($post->files as $key=>$file){
if( preg_match('~image/~', $file->post_mime_type) )
   echo '
'; else echo 'Загрузить файл
'; }

В этом примере мы сначала с помощью регулярного выражения определяем тип файла по полю 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 везде одинаковые.
можно немного переписать предыдущий пример добавить вывод иконок вместо текста

files as $key=>$file){
if( preg_match('~image/~', $file->post_mime_type) )
   echo '
'; else echo '
'; } ?>

И еще напомню есть функция ads_gallery

Обсуждение на сайте:

Рубрика:  октября 17, 2010.
/ » » »


Похожие записи: