Всем добрый день! 🙂
Работая над очередной темкой столкнулся с таким вапросом, "Каким образом можно вывести последнюю запись в одном блоке, а предпоследнюю в другом ( т.е. в другой части страници).
Причем выводилось чтобы не весь текст записи а только определенное количество символов.
В данный момент стоит токой код:
<h2>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
</h2>
<div>
<?php the_time('d.m.Y') ?> @ <?php the_category(', ') ?>
<p>
<?php the_excerpt(); ?>
</p>
</div>
Но выводит только последнюю запись.
Подскажите пожалуйста как реализовать данную задачу!
Заранее спасибо!
С уважением, Александр!
Для начала нужно разобраться, что такое Loop и как им пользоваться.
Я прочитал, но если я не ошибаюсь нету вывода записи до опрделенного символа! Или я всетаки ошибаюсь?
Это был совет к первому вопросу. Второй – про количество символов – вообще не вопрос. Вывод подстроки – это азы php.
Поймите меня правильно. Я неразбираюсь, к сожалению, в пхп настолько хорошо чтобы осущестивть данную задачу. 🙁
И если незатруднит прашу памочь!
Вот что мне удалось сдалть. Выводит последнюю запись в сокращенном варианте. (Из любой категории или конкретной)
Ю.Б. Спасибо за точ, что всетаки заставили меня покапатьсо в коде 🙂
Но всеже у меня нехватает ума вывести предпоследнюю запись! 🙂
Пожалуйста помогите осуществить ету небальшую задачку.
Другое дело 🙂
Смотрите, обычно цикл (Loop) устроен так:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
вывод
<?php endwhile; else: ?>
если нет ничего
<?php endif; ?>
То есть, в цикле столько раз, сколько получилось выбрать постов, запускается the_post(). Никто не мешает делать вызов не в цикле (while), а вручную, повторив the_post() столько раз, сколько нужно. Суть от этого не меняется.
Можно попробовать сделать так. В начала страницы запросить два поста:
<?php query_posts(‘posts_per_page=2’); ?>
Затем в первом блоке получить один первый пост:
<?php the_post(); ?> (эта функция инициализирует объкет $post данными из первого поста)
и вывести как обычно (см. любую простенькую Тему), через the_permalink(), the_title() и the_excerpt()
Затем в другой части страницы, во втором блоке опять получить пост через <?php the_post(); ?> (это будет уже второй) и вывести его аналогичным (или другим) способом.
Конечно, стоило бы к этому коду перед каждым the_post(); добавить проверку if (have_posts()), чтобы аккуратненько было.
Пробуйте.
Спасибо! Сделал по вашему совету!
Вывел вот таким образом, но при переходе по ссылке на странице текст из первого поста стоит, хотя ссылки разные.
Я вывожу в шапке сайта т.е. в header.php эти посты и у меня получается что на всех страницах в рубрике по 2а поста становится. 🙂
Пример вывода последний пост:
Предпоследний пост:
Я думаю. что чтото сделал неверно скорее всего…
а почему ты думаешь, что вторая часть выведет тебе последний пост?
правда я так и не понял, что ты подразумеваешь под понятием "последний пост" – это тот что от старости свалился вниз, или же последний добавленный.?
walaby, Вобщем я пытаюсь реализовать вывод в шапке сайта последний добвленный и предпоследний добавленный пост.
но пока ето у меня несавсем получается. К сожалению
Вы ж не сказали, что это в шапке и что потом обычный вывод будет
<?php $lastposts = get_posts(‘numberposts=2’); ?>
….
<?php setup_postdata($post = $lastposts[0]); ?>
<h2><a title="<?php the_title(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<p><?php the_excerpt(); ?></p>
…..
<?php setup_postdata($post = $lastposts[1]); ?>
<h2><a title="<?php the_title(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<p><?php the_excerpt(); ?></p>
Ю.Б. СПАСИБО БАЛЬШОЕ! Ваш вариант беспадобен!
Только если несложно обьясните как это работает:
И где про ето можно почитать?
Спасибо!
walaby, мне в разных блоках нужно вывести было!
Спасибо за вариант. 🙂
окей, в блоке, где надо вывести ПОСЛЕДНЮЮ запись:
где надо вывести ПРЕДПОСЛЕДНЮЮ запись:
а что ставить – список ul li или h1 итп – дело Ваше, в моем случае список ul li
Элементарно, Ватсон! 🙂
Сначала мы вызвали функцию get_posts, которая вернула нам массив из двух элементов типа объект класса "пост". (Не страшно пока?) Затем мы переменной (объекту) $post присвоили значение первого элемента массива, то есть последнего поста, и это значение передали функции setup_postdata (не документирована в Кодексе, но упоминается в примерах), которая инициализирует полезные глобальные переменные. Вторая строка – то же самое, но со вторым элементом массива, т.е. предпоследним постом.
Как же все просто у вас получается! Я целый день думал как ето сделать…
Ю.Б., Спасибо за обьяснение!
walaby, Спасибо за вариант!
Все варианты добавил в свою шпаргалку по ВП!
Буду падробнее изучать CODEX.
Достигается упражнениями! 😀