All Inclusive. Все включено!

Плагин двумя дополнительными SQL запросами присоединяет в исходную выборку данных $wp_query->posts все мета поля, все файлы и картинки, для каждой картинки формируются прямые url на маленькое, среднее и полное изображение. Теперь нет необходимости использовать функции the_post_thumbnail и get_post_meta.
Принцип работы:
Итак допустим мы заходим на главную страницу нашего блога WordPress выдает нам список последних 10 записей. Напомню данные уже находятся в глобальном объекте $wp_query в массиве posts $wp_query->posts. Для начала создается список из ID (номера записей под которыми они хранятся в БД).
Формируем первый SQL запрос:

$query = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE  $wpdb->posts.post_parent IN('21','29','30','35','38','42','46','48','49','55') AND $wpdb->posts.post_parent
   AND $wpdb->posts.post_type = 'attachment'";

Человеческий перевод – найти все дочерние записи для записей с номерами (’21′,’29′,’30′,’35′,’38′,’42′,’46′,’48′,’49′,’55′) И тип искомых записей должен быть “attachment”. То есть короче говоря мы находим все файлы (attachment) который мы загрузили для наших 10 записей.

Вновь формируем список ID: первые 10 ID записей и к нему добавляем ID файлов (атачметнов). Атачменты как и обычные записи хранятся в одной таблице wp_posts.
Теперь воспользуемся функцией update_meta_cache:

$all_meta = update_meta_cache('post', $ar_all_id);

$ar_all_id – здесь исходные записи + атачменты
таким образом все сразу попадает в кеш и последующие вызовы get_post_meta будут извлекать значение из кеша. Ну а далее уже дело техники – данные надо аккуратно разложить по полочкам ничего не перепутав. Все мета поля поля добавляются в массив $post->meta, а файлы в массив $post->files причем файлы сразу же сортируются по номеру order (при загрузке это можно указать – порядок сортировки).
Кроме того для каждого файла, если это изображение, рассчитываются полные пути на превьюшки : маленькая(thumbnail), средняя( medium) и полная картинка (full).
Чтобы увидеть картину в целом – очень рекомендую где нибудь в теле главного цикла добавть распечатку:

';print_r($post);echo '< /pre>'; ?>

Теперь, чтобы получить значение мета поля уже не нужно вызывать функцию get_post_meta($post->ID, ‘metaName’,true);
Все поля будут находится в ассоциативном массиве $post->meta то есть для metaName надо использовать $post->meta['metaName'].
Все файлы прикрепленные к записи находятся в массиве $post->files.
Например, чтобы проверить загружено ли хоть одно изображение для текущей записи и если загружено то вывести его маленькое картинку, ну а если нет то выводим заглушку.

files[0]):?>
    

    

Вот так всего лишь двумя дополнительными SQL убиваем сразу целый табун зайцев :)

Функцию
function all_inclusive($posts, $forcibly = 0) можно использовать не как плагин, а просто добавлять в свою тему и затем использовать принудительный вызов:

query_posts('cat=2,6,17,38');
$wp_query->posts =  all_inclusive($wp_query->posts, 1);


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

Рубрика:  августа 20, 2010.
/ » » »


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

ili.com.ua/news/za-prazdnik-ukraintsyi-namusorili-menshe-chem-fanyi-evro-2012.html
ili.com.ua/news/ukraina-predsedatelstvuet-v-obse.html
ili.com.ua/news/gai-snova-proveryaet-voditeley.html
ili.com.ua/news/zhurnalistyi-ustanovili-u-zdaniya-mvd-ukrainyi-palatku-2.html

Новости

  • В Украине предложили возобновить призыв
  • Визовый режим между Украиной и Россией
  • Эффективная система безопасности
  • Самоотверженный поступок жительниц села Феськи
  • Состоится ли встреча замглав МИД СНГ?
  • Тягнибок разрешил выступать в Верховной Раде на русском
  • Ефремов расскажет, кто виноват
  • Комментарии


    Расширеный поиск +

    Другие статьи

    Объявления

    Мои проекты на WordPress

    , - специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой.
    городская доска объявлений, основные разделы: недвижимость, транспорт, услуги, работа, куплю-продам. Стоимость сборки $300 с установкой.
    - разработка, поддержка.

    Счетчики

    our blog