2007
Как публиковать отдельно от основной ленты выбираемый в админке пост
Закончил на днях разработку очередного сайта на движке WordPress - можно сказать новостного портала. В процессе работы возникла одна нелегкая задача, суть которой заключалась в следующем:
1) на сайте должен присутствовать блок "Новость дня", в котором будет выводиться новость по выбору администратора;
2) необходима возможность каким-то образом прямо в админке помечать нужную новость, как "избранную" (вариант, когда используется query_posts, в данном случае не подходит, поскольку "новость дня" будет определяться очень часто, а редактировать для этого шаблон, чтобы каждый раз указывать новый ID поста, весьма неудобно; идеальный вариант - когда можно пометить новость в момент ее написания/редактирования);
3) важно, чтобы при этом новость не выпадала из основной ленты новостей, т.е. одновременно присутствовала и в общей ленте, и в отдельном блоке;
4) желательно, чтобы для решения задачи можно было воспользоваться готовыми решениями/плагинами без необходимости что-либо программировать;
5) плюсом также будет и простота в настройке.
Как я представлял себе это решение своим непрограммерским взглядом - в админке нужный пост помечается специальной меткой, а в шаблоне используется какая-то функция, которая находит пост по этой метке в базе данных и выводит его на страницу.
Мое внимание в этом отношении привлекли 2 плагина:
1) AdHesive - позволяет закрепить запись в ленте выше всех остальных, независимо от даты ее написания.
2) Solvent - некая противоположность плагину AdHesive, исключает выбранную запись из текущей ленты.
Что общего между этими двумя плагинами - то, что и тот, и другой добавляют новый пункт в блоке "Статус записи" на странице создания/редактирования записи.
Т.е. получается, что я нашел способ, как пометить нужную новость, осталось только разобраться как вывести такую запись на страницу, но при этом сделать так, чтобы плагин AdHesive (или Solvent) не выполняли свою основную функцию - закрепление или исключение "избранной" записи.
На глаза мне попался еще один малюсенький плагин, который как раз и пригодился. Get-a-Post - этот плагин, собственно выполняет то же самое, что и query_posts, с одним лишь отличием, что, в добавок, позволяет выводить посты, помеченные sticky-меткой (которую ставит плагин AdHesive). А это и есть как раз то, что мне было нужно. ;)
Из тех двух плагинов воспользовался Solvent, т.к. легко получилось отключить его основную функцию, да и размером он тоже маленький.
Теперь осталось подправить пару строчек в плагинах Solvent и Get-a-Post, чтобы породнить их.
Итак, нужно выполнить следующее:
1) в файле solvent.php находим строку:
- if (!in_array($post->ID, $slippers))
и закомментируем ее, тем самым отключив функцию исключения поста из ленты:
- //if (!in_array($post->ID, $slippers))
2) в этом же файле заменим на нужное (если требуется) слово Slippery (это слово, которое отображается в админке) в следующей строке:
- <div id="solventdiv"><label class="selectit"><input type="checkbox" name="solvent_slippery" value="true"<?php echo $checked; ?/> /> Slippery</label></div>
3) в файле get-a-post.php находим строку:
- $query_suffix = "ID = post_id AND meta_key = 'sticky' AND meta_value = 1";
и заменяем в ней sticky на slippery.
Вуаля! Задача решена.
P.S. Для вывода "избранной" новости в нужное место страницы используется следующая функция:
- <?php get_a_post(GETSTICKY); ?>
После нее нужно вставить теги шаблона, используемые в цикле, такие как the_content(), the_title() и т.д.








7 мая 2007/14:30
Дык можно сразу это объединить в один плагин?! зачем читателям мучаться с измненением-объединением этих 2 плагинов? :)
7 мая 2007/15:18
Попробовал объединить, но при активации вылазит ошибка. Не знаю, как ее устранить.
10 мая 2007/11:02
Извините, за оффтоп.
Создал блог на wordpress.com, но писать через браузер не охота. Подскажи софт для постинга в wordpress.com.
Слышал, что можно через Semagic. А вот как настроить его на WordPress.com, я вот не нашел. Подскажи.
10 мая 2007/11:14
Igor, http://semagic.sourceforge.net/api.html
используем рис. 2 :)
10 мая 2007/13:25
Законектился, но при отправки сообщения появляется ошибка: "Sorry, you can not post on this weblog or category."
10 мая 2007/14:30
дык значит категория неправильно выбрана. попробуйте обновить категории.
22 мая 2007/04:37
Спасибо большое - значительная часть моей задачи решена :)
Но возникла мысль - а зациклить вывод как-нибудь можно, если в базе есть несколько постов с меткой Slippery?
То есть, сделать возможным вывод не одной, а, например, трех новостей?
22 мая 2007/11:38
cloot, спасибо.
Зациклить такие записи - задача хитрая :), но я думаю, что ее можно решить, используя цикл "foreach". Нужо написать запрос к БД, который проверяет посты на наличие метки "Slippery".
31 мая 2007/16:18
может вам открыть форум по вордпрессу? бывает столько вопросов возникает, а обсудить негде, если такой уже есть может ссылку кинете
31 мая 2007/17:17
Наверное, нет смысла нам открывать форум, поскольку уже есть 2 популярных, где и тусуется вордпрессовский народ :)
1) http://maxsite.org/forum/
2) http://mywordpress.ru/support/
2 июня 2007/20:47
спасибо! очень познавательно!
2 июня 2007/21:38
Пожалуйста, StyleXP! ;)
13 июня 2007/03:07
Меня тут недавно осенило, ведь можно просто доп. категорию присваивать записи, которая должна быть отдельно.
И выводить ее отдельно, оформляя как угодно.
Я так сделала на http://gibe.ru/, из общей ленты такая запись не выпадает.
И «снять» ее с «особой» позиции легко — галку убрать с доп. категории в админке.
13 июня 2007/13:39
А ведь действительно так и получается :). Не зря же говорится, что все гениальное просто.
Спасибо, sonika, за идею!
3 сентября 2007/14:12
А можно ли несколько новостей выводить таким способом? И как?
3 сентября 2007/14:25
И ещё вопрос, можно ли сделать чтобы у старой новости не надо было отменять вывод? Чтобы выводилось та новость, которую последней отметили...
3 сентября 2007/22:53
> А можно ли несколько новостей выводить таким способом?
Если я вас правильно понял, то я отвечал на подобный вопрос выше.
> можно ли сделать чтобы у старой новости не надо было отменять вывод?
Нельзя.
28 января 2008/13:28
sonika
а можно поподробней обьяснить как это сделать
30 января 2008/19:06
А где можно посмотреть этот сайт?
30 января 2008/19:33
Compass, нельзя. Конфиденциально. Если бы это был мой сайт, сказал бы.
30 января 2008/20:09
Игорь, напишите мне на мыло sonika блаблабла sonika.ru я Вам этот файл вышлю, а то боюсь здесь коряво отобразится.