Замена виджету WordPress для вывода последних записей или замена сложного кода для выборки последних записей
Выборка последних записей в WordPress производится не лучшим образом, а именно выбираются все значения строки в таблице wp_posts для каждой записи, хотя необходимо взять всего несколько значений. Так же, если выводить последние записи ...
- Предыдущие записи
- Мой метод избавления от спама в комментариях, для WordPress ← 10 Май 2010 // 13
- Как запустить обработку формы используя JavaScript ← 10 Май 2010 // 5
- Файл шаблона functions.php в WordPress ← 6 Октябрь 2010 // 21

У меня вопрос. А как добавить к новости короткий анонс текста, например, в 20 знаков? Пробовал добавлять к выборке из базы post_content и обрезать при помощи SUBSTRING(post_content,1,30), но ничего не вышло ввиду скудных знаний php. Если б это было реализовано - было бы очень даже не плохо
Раз нужно что-то менять в этой функции, то используйте уже get_posts().
Подрезать текст можно функцией PHP:
Туда, где вызывается функция вывода контента.
Не пойму. Пробовал вставлять в разных местах в разных файлах - никаких изменений.
и не могу понять, откуда брать id рубрики. В админке в списке рубрик не вижу, WordPress 3.2.1. Есть, например, рубрика "Новости". Указано только Описание, Ярлык и количество записей.
Или не там смотрю?
Епт, ну мышь навести трудно на ссылку и посмотреть в ее адресе значение id?
Имеется ввиду
Выкладываю код, который получился у меня, может, кому будет интересно:
<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:
3. К ссылке на картинку лучше rel="nofollow" приписать:
я просто привёл код, - вместо регулярки можно, конечно, использовать функцию strpos(), например. Я можно ничего не делать. Просто здесь 2 варианта - ссылка как-бы из текста и по стрелке. На выбор
.
А как исключить ту запись в списке, которая открыта в текущий момент?
Добавить в запрос AND p.ID <> $post->ID:
админ, вы меня конечно извините, но в php я ничего не понимаю, скажите, пожалуйста конкретнее куда мне нужно вставить этот код?
о, все получилось. Дошло. Спасибо большое за подсказку.
Ммм. Я конкретно вроде сказал, только не описал, а кодом сразу. Ок, будь по вашему.
Дубль II:
Нужно добавить в запрос AND p.ID <> $post->ID:
Находим в коде строки AND post_status = 'publish' и сразу после них, через пробел, вставляем AND p.ID <> $post->ID, получится:
П.С. Не хочу весь код сюда дублировать ради пары слов.
да, спасибо, большое, я уже и сам допер, выше я писал уже, что сделал. Еще раз спасибо.
А как вывести последние сколько-то записей не на блоге, а на сторонней странице(со ссылками на записи в блог, конечно). Точнее, это не совсем сторонняя - в том же домене, только на странице не под WordPress. Чтобы было яснее, то нужно публиковать 3 последних заголовка постов из http://www.pakodan.by/blog/ в, например, футер сайта http://www.pakodan.by. Заранее благодарен!
На блоге, записи которого надо вывести, делаете странцу, которая полностью генерирует html код записей и с блога, на котором надо показывать записи, получаете контент этой страницы через
file_get_contents('http://site.ru/путь_до_страницы создающей_записи')Но это не блог, а сайт под управлением движка MODx. Как в таком случае быть?
Какая разница? Блог/сайт/ресурс/портал/форум/соц-сеть/УГ для PHP как-то все равно как называется. PHP для всех них работает одинаково, никому не отдает предпочтение, я в этом уверен на 100500%!
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Очень помогла статья! Спасибо автору!!!