Поддержка Проблемы и решения Вывод новостей внизу одной страницы

  • Возможно сейчас задам глупый вопрос, но как вывести последние несколько новостей на одной странице (например, главной)? Т.е. именно не в сайдбаре, а на странице, внизу.
    Есть какой-то плагин или код какой-то надо вставить, или как-то иначе?

Просмотр 3 ответов — с 16 по 18 (всего 18)
  • Практически добилась своего. Дату и время теперь выводит для каждого поста свою. Добавила несколько строк в код плагина 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 — нужно было для мультиязычного сайта.

    Atrax

    (@atrax)

    Ethical engineer

    Лихо! 🙂 с удовольствием «отзываю» все свои шпильки в ваш адрес.

Просмотр 3 ответов — с 16 по 18 (всего 18)
  • Тема «Вывод новостей внизу одной страницы» закрыта для новых ответов.