Вывод последних записей без использования виджета или плагина


www.workzilla.ru

Как известно большое количество плагинов увеличивают нагрузку на сервер.  Во избежание этого, некоторые плагины  можно заменить  внедрением кода в сам  шаблон. Вывод последних записей может оказаться полезным в плане удержания посетителя на блоге. Если создавать интересные заманчивые заголовки к постам, то вероятность того, что посетитель задержится на блоге, увеличивается.

 

Для начала следует определить  место вывода популярных записей — в конце поста, отдельной странице и т.д.  Мне данный код пригодился при оформлении  странице «Ошибки 404»

В файл functions.php надо выставить следующий код

/** Последние записи
------------------------------------------------------
$post_num (5) = количество ссылок
$format ('') = {avatar} {author}: {date:j.M.Y} - {a}{title}{/a} ({comments})
$cat ('') = Категории из которых нужно выводить (5,15) или которые нужно исключить (-5,-15), через запятую (одновременно включение и исключение не работает (не имеет смысла) )
$list_tag (li) = Тег списка
*/
function recent_posts ($post_num=5, $format='', $cat='', $list_tag='li', $echo=true){
    global $post, $wpdb;
 
    $cur_postID = $post->ID;
 
    if ($cat){
        $JOIN = "LEFT JOIN $wpdb->term_relationships rel ON ( p.ID = rel.object_id )
            LEFT JOIN $wpdb->term_taxonomy tax ON ( tax.term_taxonomy_id = rel.term_taxonomy_id  ) ";
        $DISTINCT = "DISTINCT";
        $AND_taxonomy = "AND tax.taxonomy = 'category'";
        $AND_category = "AND tax.term_id IN ($cat)";
        //Проверка на исключение категорий
        if( strpos($cat, '-')!==false )
            $AND_category = 'AND tax.term_id NOT IN ('. str_replace( '-','', $cat ) .')';
 
    }
    //если нужно показать автора
    if( strpos($format, '{author}')!==false ){
        $JOIN .= " LEFT JOIN $wpdb->users u ON ( p.post_author = u.ID )";
        $SEL = ", u.user_nicename AS author, u.user_email, u.user_url";
        //если нужно показать аватар (gavatar)
        if( strpos($format, '{avatar}')!==false )
            $av = "<img src='http://www.gravatar.com/avatar/%1\$s?s=25' alt='' />";
    }
 
    $sql = "SELECT $DISTINCT p.ID, post_title, post_date, comment_count, guid $SEL
    FROM $wpdb->posts p $JOIN
    WHERE post_type = 'post' AND post_status = 'publish' $AND_category $AND_taxonomy
    ORDER BY post_date DESC LIMIT $post_num";
    $results = $wpdb->get_results($sql);
 
    if (!$results)
        return false;
    preg_match ('@\{date:(.*?)\}@', $format, $date_m);
    foreach ($results as $pst){
        $x == 'li1' ? $x = 'li2' : $x = 'li1';
        if ( (int)$pst->ID == (int)$cur_postID ) $x .= " current-item";
        $Title = $pst->post_title;
        $a = "<a href='". get_permalink($pst->ID) ."' title='{$Title}'>";
 
        if ($format){
            $avatar = $av ? sprintf( $av, md5($pst->user_email) ) : '';
            $date = apply_filters('the_time', mysql2date($date_m[1], $pst->post_date));
            $Sformat = str_replace ($date_m[0], $date, $format);
            $Sformat = str_replace(
                array('{title}', '{a}', '{/a}', '{author}',   '{comments}',         '{avatar}'),
                array( $Title,    $a,   '</a>',  $pst->author, $pst->comment_count,  $avatar  ),
                $Sformat
            );
        }
        else $Sformat = "$a$Title</a>";
        $out .= "\n<$list_tag class='$x'>{$Sformat}</$list_tag>";
    }
    if ($echo)
        return print $out;
    return $out;
}

Можно настроить вывод только из определенных рубрик или, наоборот, исключить одну или несколько рубрик.
Чтобы убрать какие-то рубрики, нужно написать их ID  через запятую, со знаком «-»

В то место куда вы  хотели бы выводить последние записи  вставляем

<ul> <?php recent_posts (5); ?> // 5 количество записей </ul>
<ul>  
      <?php recent_posts (5, '', '5,15,20');  ?>  
</ul>  
// выведет список последних записей только из категорий, ID которых равны 5, 15 или 20
<ul>  
      <?php recent_posts (5, '', '-5,-15,-20');  ?>  
</ul>  
// выведет список последний записей из всех категорий, кроме 5, 15 или 20

Похожие записи

3 комментария на “Вывод последних записей без использования виджета или плагина”

  • Soll:

    Хотелось бы увидеть записи по созданию шаблонов в вп. Желательно с разжевкой всего и вся )))

    • admin:

      Создание шаблона требует знаний HTML, CSS, PHP и основ WordPress`а, если получиться, то постараюсь разобраться в этой теме и опубликовать свои результаты.

  • alex-zir:

    На своём старом блоге я использовал этот код. Действительно, всё прекрасно работало. Есть, кстати, множество вариаций, которые можно применить сюда.

Оставить комментарий

Поиск
Мебель на заказ

Частный мастер 8(909)676-75-73