Поддержка → Проблемы и решения → Вывод новостей внизу одной страницы
Вывод новостей внизу одной страницы
-
Возможно сейчас задам глупый вопрос, но как вывести последние несколько новостей на одной странице (например, главной)? Т.е. именно не в сайдбаре, а на странице, внизу.
Есть какой-то плагин или код какой-то надо вставить, или как-то иначе?
-
Практически добилась своего. Дату и время теперь выводит для каждого поста свою. Добавила несколько строк в код плагина recent-posts.php
Единственное, что не устраивает, так это формат вывода: 2010-02-16 08:43:10 — я хотела бы без времени. Да и время здесь неправильное, хотя в админке стоит UTC+3.
Код плагина с добавленными/измененными строками:<?php ffunction mdv_recent_posts($no_posts = 5, $post_date = '<li>', $after = '</li>', $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true, $include_pages = false) { global $wpdb; $time_difference = get_option('gmt_offset'); $now = gmdate("Y-m-d H:i:s",time()); $request = "SELECT ID, post_date_gmt, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' "; if($hide_pass_post) $request .= "AND post_password ='' "; if($include_pages) $request .= "AND (post_type='post' OR post_type='page') "; else $request .= "AND post_type='post' "; $request .= "AND post_date_gmt < '$now' ORDER BY post_date DESC LIMIT $skip_posts, $no_posts"; $posts = $wpdb->get_results($request); $output = ''; if($posts) { foreach ($posts as $post) { $post_title = stripslashes($post->post_title); $permalink = get_permalink($post->ID); $post_date = stripslashes($post->post_date_gmt); $output .= $post_date .' ' . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>'; if($show_excerpts) { $post_excerpt = stripslashes($post->post_excerpt); $output.= '<br />' . $post_excerpt; } $output .= $after ; } } else { $output .= $before . "None found" . $after; } echo $output; } ?>
Все! Проблема решена (с датой). Измененный код плагина recent-posts.php (вдруг кому пригодится):
<?php function mdv_recent_posts($no_posts = 5, $post_date = '<li>', $after = '</li>', $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true, $include_pages = false) { global $wpdb; $datef = 'Y/m/j'; $time_difference = get_option('gmt_offset'); $now = gmdate("Y-m-d H:i:s",time()); $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' "; if($hide_pass_post) $request .= "AND post_password ='' "; if($include_pages) $request .= "AND (post_type='post' OR post_type='page') "; else $request .= "AND post_type='post' "; $request .= "AND post_date_gmt < '$now' ORDER BY post_date DESC LIMIT $skip_posts, $no_posts"; $posts = $wpdb->get_results($request); $output = ''; if($posts) { foreach ($posts as $post) { $post_title = stripslashes($post->post_title); $permalink = get_permalink($post->ID); $post_date = mysql2date($datef, $post->post_date); $output .= $post_date .' ' . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>'; if($show_excerpts) { $post_excerpt = stripslashes($post->post_excerpt); $output.= '<br />' . $post_excerpt; } $output .= $after ; } } else { $output .= $before . "None found" . $after; } echo $output; } ?>
Дату теперь выводит в формате, задающемся строкой
$datef = 'Y/m/j';
И код вызова плагина на главной странице:<?php if ( is_page('index') || is_front_page('')) : ?> <div class="archive"> <?php mdv_recent_posts(3, ' ', '<br /><br />', true, 0, true, false); ?> </div> <?php endif; ?>
в данном случае is_front_page — нужно было для мультиязычного сайта.
Лихо! 🙂 с удовольствием «отзываю» все свои шпильки в ваш адрес.
- Тема «Вывод новостей внизу одной страницы» закрыта для новых ответов.