ГлавнаяWordpressАвторские Функции → Функция для вывода последних записей в WordPress
Kazapa - биржа быстрых рекламных ссылок

Функция для вывода последних записей в WordPress

Комментариев: 110Функция для вывода последних записей в WordPress
  • У меня вопрос. А как добавить к новости короткий анонс текста, например, в 20 знаков? Пробовал добавлять к выборке из базы post_content и обрезать при помощи SUBSTRING(post_content,1,30), но ничего не вышло ввиду скудных знаний php. Если б это было реализовано - было бы очень даже не плохо

    ОТВЕТИТЬ ↓
    • Раз нужно что-то менять в этой функции, то используйте уже get_posts().

      Подрезать текст можно функцией PHP:

      $content = $post->post_content;
      $content = strip_tags($content);
      $content = substr( $content, 0, 200 )
      ОТВЕТИТЬ ↓
      • smile а вставлять-то куда этот код?

        ОТВЕТИТЬ ↓
        • Туда, где вызывается функция вывода контента.

          ОТВЕТИТЬ ↓
          • Не пойму. Пробовал вставлять в разных местах в разных файлах - никаких изменений.

            ОТВЕТИТЬ ↓
  • и не могу понять, откуда брать id рубрики. В админке в списке рубрик не вижу, WordPress 3.2.1. Есть, например, рубрика "Новости". Указано только Описание, Ярлык и количество записей.
    Или не там смотрю?

    ОТВЕТИТЬ ↓
    • Епт, ну мышь навести трудно на ссылку и посмотреть в ее адресе значение id?

      ОТВЕТИТЬ ↓
  • Не пойму. Пробовал вставлять в разных местах в разных файлах - никаких изменений.

    Имеется ввиду

    <?php get_posts( $args ); ?>
    ОТВЕТИТЬ ↓
  • Выкладываю код, который получился у меня, может, кому будет интересно:

    	<div class="lastert_news">
    
    	<h1>LASTEST NEWS</h1>
    	<div class="clear"></div>
    	<?php
    		$args = array( 'numberposts' => 1, 'category' => 39 );// ID раздела - см. в адресной строке браузера
    		$lastposts = get_posts( $args );
    		foreach($lastposts as $post) : setup_postdata($post); ?>
    			<span class="date"><?php the_date(); ?></span>
    			<?php
    				$content = $post->post_content;
    				$content = strip_tags($content);
    				echo preg_replace('#^((?:.+\s+){2})((?:.+\s+){15}).*?#sU', '<a href="' .home_url('?p=' . $post->ID).'">$1</a>$2...', $content);
    			?><a class="news_more" href="<?php the_permalink(); ?>"><img src="<?php bloginfo('template_url'); ?>/images/more-link.png" width="12" height="12" alt="more" /></a>
    		<?php endforeach; ?>
    
    	</div><!--lastert_news-->
    
    ОТВЕТИТЬ ↓
    • Интересная регулярка в коде, только в чем её практический смысл? Ставить ссылку на статью с анкором из первых двух слов обрезного текста, что это дает?

      1. Может home_url('?p=' . $post->ID) лучше заменить на get_permalink(). А то там одна, потом другая ссылка на статью.

      2. После endforeach; wp_reset_postdata(); вставьте чтобы потом глюков не ловить с переменой $post:

      <?php endforeach; wp_reset_postdata(); ?>

      3. К ссылке на картинку лучше rel="nofollow" приписать:

      <a class="news_more" rel="nofollow" ...
      ОТВЕТИТЬ ↓
  • я просто привёл код, - вместо регулярки можно, конечно, использовать функцию strpos(), например. Я можно ничего не делать. Просто здесь 2 варианта - ссылка как-бы из текста и по стрелке. На выбор smile .

    ОТВЕТИТЬ ↓
  • А как исключить ту запись в списке, которая открыта в текущий момент?

    ОТВЕТИТЬ ↓
    • Добавить в запрос AND p.ID <> $post->ID:

      ... AND post_status = 'publish' AND p.ID <> $post->ID ...
      ОТВЕТИТЬ ↓
      • админ, вы меня конечно извините, но в php я ничего не понимаю, скажите, пожалуйста конкретнее куда мне нужно вставить этот код?

        ОТВЕТИТЬ ↓
        • о, все получилось. Дошло. Спасибо большое за подсказку.

          ОТВЕТИТЬ ↓
      • Ммм. Я конкретно вроде сказал, только не описал, а кодом сразу. Ок, будь по вашему.

        Дубль II:
        Нужно добавить в запрос AND p.ID <> $post->ID:
        Находим в коде строки AND post_status = 'publish' и сразу после них, через пробел, вставляем AND p.ID <> $post->ID, получится:

        код код код... AND post_status = 'publish' AND p.ID <> $post->ID код код код...

        П.С. Не хочу весь код сюда дублировать ради пары слов.

        ОТВЕТИТЬ ↓
        • да, спасибо, большое, я уже и сам допер, выше я писал уже, что сделал. Еще раз спасибо.

          ОТВЕТИТЬ ↓
  • smile Так, глядишь, и крутое расширение для вордпреса выйдет в итоге

    ОТВЕТИТЬ ↓
  • А как вывести последние сколько-то записей не на блоге, а на сторонней странице(со ссылками на записи в блог, конечно). Точнее, это не совсем сторонняя - в том же домене, только на странице не под WordPress. Чтобы было яснее, то нужно публиковать 3 последних заголовка постов из http://www.pakodan.by/blog/ в, например, футер сайта http://www.pakodan.by. Заранее благодарен!

    ОТВЕТИТЬ ↓
    • На блоге, записи которого надо вывести, делаете странцу, которая полностью генерирует html код записей и с блога, на котором надо показывать записи, получаете контент этой страницы через

      file_get_contents('http://site.ru/путь_до_страницы создающей_записи')
      ОТВЕТИТЬ ↓
      • и с блога, на котором надо показывать записи

        Но это не блог, а сайт под управлением движка MODx. Как в таком случае быть?

        ОТВЕТИТЬ ↓
        • Какая разница? Блог/сайт/ресурс/портал/форум/соц-сеть/УГ для PHP как-то все равно как называется. PHP для всех них работает одинаково, никому не отдает предпочтение, я в этом уверен на 100500%! *yes* file_get_contents() — это функция PHP, WP тут вообще не при делах.

          ОТВЕТИТЬ ↓
          • Понял! Благодарю!

            ОТВЕТИТЬ ↓
          • Прошу прощения за тупой вопрос: а как сделать страницу, которая полностью генерирует html код записей?

            ОТВЕТИТЬ ↓
  • <?php $the_query = new WP_Query('cat=' . $ex_feat . '&showposts=5&orderby=post_date&order=desc');
    	while ($the_query->have_posts()) : $the_query->the_post(); $do_not_duplicate = $post->ID;?>

    Прочитал почти все комментарии, но так и не смог найти что добавить чтоб исключить 16 категорию

    ОТВЕТИТЬ ↓
    • Ммм. А статью читать не пробовали? Там как раз ответ на этот вопрос есть в конце:

      <ul>
            <?php kama_recent_posts (5, '', '-5');  ?>
      </ul>
      // выведет 5 последних записей из всех категорий, кроме 5
      ОТВЕТИТЬ ↓
  • Очень помогла статья! Спасибо автору!!!

    ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?