Плагин двумя дополнительными 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:
$ar_all_id – здесь исходные записи + атачменты
таким образом все сразу попадает в кеш и последующие вызовы get_post_meta будут извлекать значение из кеша. Ну а далее уже дело техники – данные надо аккуратно разложить по полочкам ничего не перепутав. Все мета поля поля добавляются в массив $post->meta, а файлы в массив $post->files причем файлы сразу же сортируются по номеру order (при загрузке это можно указать – порядок сортировки).
Кроме того для каждого файла, если это изображение, рассчитываются полные пути на превьюшки : маленькая(thumbnail), средняя( medium) и полная картинка (full).
Чтобы увидеть картину в целом – очень рекомендую где нибудь в теле главного цикла добавть распечатку:
echo '
';print_r($post);echo '< /pre>'; ?>
Теперь, чтобы получить значение мета поля уже не нужно вызывать функцию get_post_meta($post->ID, ‘metaName’,true);
Все поля будут находится в ассоциативном массиве $post->meta то есть для metaName надо использовать $post->meta['metaName'].
Все файлы прикрепленные к записи находятся в массиве $post->files.
Например, чтобы проверить загружено ли хоть одно изображение для текущей записи и если загружено то вывести его маленькое картинку, ну а если нет то выводим заглушку.
if($post->files[0]):?>
Вот так всего лишь двумя дополнительными SQL убиваем сразу целый табун зайцев
Функцию
function all_inclusive($posts, $forcibly = 0) можно использовать не как плагин, а просто добавлять в свою тему и затем использовать принудительный вызов:
Вы еще не успели купить билет в кино. Особенно хорошо ехать с ребенком на Крит по системе все включено. All Inclusive travel: Find All Inclusive vacation guides and All Inclusive travel tips on Orbitz. All inclusive holidays with the experts to Egypt, Caribbean, Spain and lots more with all inclusive holidays great advice and user reviews. All Inclusive Vacation Packages from Canada, Cheap All Inclusive Vacations to Cuba, Mexico, all inclusive carribbean vacations, Dominican Republic and. Сайт визитка - пример наибольшего.
,
- специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой. городская доска объявлений, основные разделы: недвижимость, транспорт, услуги, работа, куплю-продам. Стоимость сборки $300 с установкой. - разработка, поддержка.