января 2, 2010 | by Макс | Среди последних тенденций в шаблонах wordpress за 2009 год большую популярность обрели так называемые «журнальные темы» (magazine). С их помощью можно придать блогу вид газеты или онлайн СМИ. Мне лично такие дизайны очень нравятся, так как позволяют на одной странице собрать множество источников информации из разделов и максимально точно дать представление о том или ином проекте. То есть ты заходишь на главную и видишь последние публикации в категориях, понимаешь о чем здесь можно почитать – это более наглядно чем вывод последних 3-5 постов блога. Так вот, для одного своего проекта я нашел в интернете подобный шаблончик. Выглядело все достаточно замечательно, но с увеличением посещаемости я обнаружил (точнее мне об этом сказал хостер:) серьезную нагрузку на базу данных. Пошел разбираться в коде и увидел, что для вывода превьюшек для постов использовались запросы к БД прямо из шаблона: $id =$post->ID; $the_content =$wpdb->get_var(“SELECT post_content FROM $wpdb->posts WHERE ID = $id”); $pattern = ‘!preg_match_all($pattern, $the_content, $matches); $image_src = $matches['1'][0]; ?> /images/no-image. gif) 0 0 no-repeat;”> В итоге с главной и страниц категорий получалось до 10-15 лишних запросов к базе данных, что, конечно, при посещаемости в 2-3к уников давало о себе знать. Пришлось искать альтернативное решение – и оно нашлось! Итак, заходим в файл functions. php либо создаем его, если у вас нет. В нем вставляем следующую функцию: function catch_that_image() { global $post, $posts; $first_img = ”; ob_start(); ob_end_clean(); $output = preg_match_all(‘//i’, $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ //Defines a default image $first_img = “/images/default. jpg”; } return $first_img; } После этого сохраняем и закрываем файлик. В результате вызова данной функции вы получите ссылку на первое изображение из поста. Если такового не найдется, то будет выводиться картинка по адресу images/default. jpg (или можете задать свой). Теперь для вывода ссылки на картинку нужно всего лишь вызвать функцию: Но помните, что выводится лишь путь, который нужно вставить уже в HTML код для тега IMG! В общем, с помощью данного хака получилось сократить количество обращений к базе и сделать код более компактным. Надеюсь, совет вам пригодится – вроде штука нужная. Следует также добавить, что для отображения картинки из поста в Wordpress 2.9 добавлена специальная функция post_thumbnail, поэтому, если у вас последняя версия системы – обратите на нее внимание. h++p://wordpressinside. ru/tips/firs-image/ Теги: WordPress
Понравилась статья? Получай обновления и будь всегда в курсе событий!