Вывод новых постов в сайдбаре wordpress
В вордпрессе есть такая замечательная штука – вывод последних постов в сайдбаре. Однако, вариант, реализованный разработчиками, крайне неудобен. Вывод новых постов в сайдбаре вордпресса не может быть разбит на категории, посты берутся абсолютно из всех разделов. При работе над одним из проектов я решил подыскать что-нибудь, что более соответствует моим взглядам на вывод последних постов в сайдбаре вордпресса. Немного поиска, и я нашел замечательное решение. Привожу его код здесь, огромное спасибо Maxsite!
Делаем файл main-functions.php. Кидаем в каталог текущего шаблона. Сам код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | <?php //дополнительные функции function maxsite_explode($s = '' ) { $s = trim( str_replace(',', ' ', $s) ); $s = trim( str_replace(';', ' ', $s) ); $s = trim( str_replace(' ', ' ', $s) ); $s = trim( str_replace(' ', ' ', $s) ); $s = trim( str_replace(' ', ' ', $s) ); $s = trim( str_replace(' ', ' ', $s) ); $s = array_unique( explode(' ', trim($s) ) ); $out = array(); foreach ( $s as $val_key => $val_val ) if ( ( (int) $val_val) > 0 ) array_push( $out, $val_val); return $out; } function maxsite_last_post_cat( $num_cat = '', $format = '[DATE] [A][TITLE][/A]', $datef = 'j.m.Y', $count = 5 ) { $options = '-' . $num_cat . $format . $datef . $count; $cache_key = (string) (md5(__FUNCTION__ . serialize($options))); if ( $output = wp_cache_get($cache_key) ) return print($output); ob_start(); $count = (int) $count; echo '<ul class="is_link last_post">'; $arr_num_cat = maxsite_explode($num_cat); $num_cat = ''; foreach ($arr_num_cat as $num) { $num = (int) $num; if ( $num > 0) $num_cat .= $num . ' '; } $num_cat = str_replace(' ', ',', trim($num_cat)); global $wp_version, $wpdb; $ver = (float) $wp_version; if ($ver < 2.3) { // только для 2.2 if ( $num_cat ) $num_cat = "AND category_id IN($num_cat)"; else $num_cat = ''; if ( $count == 0 ) $count = ''; else $count = 'LIMIT '. $count; $sortby = 'post_date DESC'; $request = "SELECT DISTINCT ID, post_title, post_date FROM $wpdb->posts, $wpdb->post2cat WHERE post_status = 'publish' AND post_type = 'post' AND ID = post_id {$num_cat} ORDER BY {$sortby} {$count}"; } else { // запрос для 2.3 if ( $num_cat ) $num_cat = "AND tx.term_id IN ($num_cat)"; else $num_cat = ''; if ( $count == 0 ) $count = ''; else $count = 'LIMIT '. $count; $sortby = 'p.post_date DESC'; $request = "SELECT DISTINCT p.ID, p.post_title, p.post_date FROM $wpdb->term_taxonomy tx, $wpdb->term_relationships tr, $wpdb->posts p WHERE tx.taxonomy='category' {$num_cat} AND tx.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND p.post_status = 'publish' AND p.post_type = 'post' ORDER BY {$sortby} {$count}"; } $posts_new = $wpdb->get_results($request); if ( $posts_new ) foreach ($posts_new as $post_new) { //[DATE] $DATE = mysql2date($datef, $post_new->post_date); $TITLE = $post_new->post_title; // [TITLE] $A1 = '<a href="' . get_permalink($post_new->ID) . '" title="' . $TITLE . '">'; //[A] $A2 = '</a>'; //[/A] $out = str_replace('[DATE]', $DATE, $format); $out = str_replace('[TITLE]', $TITLE, $out); $out = str_replace('[A]', $A1, $out); $out = str_replace('[/A]', $A2, $out); echo '<li>' . $out . '</li>'; } echo '</ul>'; wp_cache_add($cache_key, ob_get_flush()); } ?> |
Использование, например в сайдбаре:
1 2 3 4 5 6 | <?php require_once('main-functions.php'); echo '<div class="last_post">'; maxsite_last_post_cat(); echo ''; ?> |
Описание maxsite_last_post_cat:
- $num_cat = ” – номера рубрик через запятую, пробел или точку с запятой
- $format = ‘[DATE] [A][TITLE][/A]‘ – формат вывода
- $datef = ‘j.m.Y’ – формат даты (стандарт PHP)
- $count = 5 – кол-во записей
Если рубрики не указывать, то берутся все. Функция использует кэширование.
А тем временем названы победители российского сетевого конкурса РОТОР 2010
Прокомментировать
Рубрики
- javascript
- SEO
- Smarty
- UIPI
- Боремся со СПАМом
- Верстка
- Движки форумов
- Железо
- Забавно
- Интернет в лицах
- Интернет-магазины
- Новости
- Обзоры сайтов
- Обо всем
- Полезные скрипты
- Работа с CMS
- Создание сайтов
- Уроки рекламы
- Шаблоны
