Чекбокс «Опубликовать на главной»
[ ←Вернуться к стандартному виду ]
sonika.ru Оказывается, организовать в WordPress чекбокс «опубликовать на главной» неимоверно просто! В этом поучавствуют мои любимые custom fileds.
Cуть в том, что записи с отмеченным чекбоксом появятся на главной странице блога, остальные — нет.
UPD Ю.Б. написал плагин On Home Page, который «всё сделает сам».
Для нечайников: перейти сразу к нужному абзацу.
Для этого мы создаем произвольное поле с ключем опубликовать на главной и в значение ему пишем 1. Все это можно привести в более божеский вид и поместить чекбокс под полем визуального редактирования записи — для удобства пользователя. Берем любой плагин для работы с custom fields в админ. панели:
- Custom Write Panel для wp 2.2
wordpress.org/extend/plugins/custom-write-panel/
- Freshpost для wp 2.3 —2.6 (модификация плагина Custom Write Panel)
wordpress.org/extend/plugins/fresh-page/
- Flutter — более навороченная версия Freshpost (для wp 2.5 и выше)
freshout.us/goodies/fresh-post-for-wordpress-wordpress-cms/
- more fields
wordpress.org/extend/plugins/more-fields/
- оригинальный плагин Custom Field GUI
rhymedcode.net/custom-field-gui/custom-field-gui/
- или Custom Field GUI в модификации Максима «MaxSite - Произвольные поля»
Нет никакой разницы какой плагин вы будете использовать для вывода чекбокса на странице создания/редактирования записей, выполняя одну и ту же задачу (управление custom fields в админ. панели) эти плагины просто отличаются степенью навороченности функций и визуальным управлением произвольными полями.
Покажу на примере плагина «MaxSite - Произвольные поля», который будет работать со всеми версиями WordPress.
Устанавливаем плагин, берем файл conf-sample.ini
и переименовываем его в conf.ini
, содержимое файла должно быть таким conf.ini
:
[Отметьте, чтобы опубликовать на главной] type = checkbox mymeta = опубликовать на главной
Загружаем conf.ini
в папку плагина rc-custom-field-gui. Все готово, чекбокс на месте, осталось чуть модифицировать код главной страницы. За вывод записей на главной отвечает файл-шаблон home.php
или index.php
(зависит от вашей Темы, подробнее читайте тут о иерархии шаблонов).
Перед началом цикла (луп, он же Loop) пишем:
<?php query_posts($query_string.'&meta_key=опубликовать на главной&meta_value=1'); ?>
Все готово!
Стандартный цикл (луп) начинается с и заканчивается строчкой
Только для WordPress 2.6 и выше
Для тех, кто совсем в танке :) привожу полный код лупа Темы default с нужной строчкой query_posts
в начале:
<?php query_posts($query_string.'&meta_key=опубликовать на главной&meta_value=1'); ?> <div id="post-<?php the_ID(); ?>" class="post"> <h2><a title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>" rel="bookmark" href=<?php the_permalink() ?>"></a></h2> <small> by </small> <p class="postmetadata">'); ?> |</p> </div>
Для WordPress 2.5 и ниже
В WP 2.5 и ниже все немного сложнее с выводом постов, содержащих определенный ключ и значение произвольного поля, стандартный цикл преобразуется в такой (изменения в строчках 1--14 и 24):
<?php $querystr = " SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'опубликовать на главной' AND wpostmeta.meta_value = '1' AND wposts.post_status = 'publish' AND wposts.post_type = 'post' ORDER BY wposts.post_date DESC "; $pageposts = $wpdb->get_results($querystr, OBJECT); ?> <?php if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2> <small><?php the_time(__('F jS, Y', 'kubrick')) ?> <!-- by <?php the_author() ?> --></small> <div class="entry"> <?php the_content(__('Read the rest of this entry »', 'kubrick')); ?> </div> <p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?> <?php comments_popup_link(__('No Comments »', 'kubrick'), __('1 Comment »', 'kubrick'), __('% Comments »', 'kubrick')); ?></p> </div> <?php endforeach; ?> <div class="navigation"> <div class="alignleft"><?php next_posts_link(__('« Older Entries', 'kubrick')) ?></div> <div class="alignright"><?php previous_posts_link(__('Newer Entries »', 'kubrick')) ?></div> </div> <?php else : ?> <h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2> <p class="center"><?php _e('Sorry, but you are looking for something that isn’t here.', 'kubrick'); ?></p> <?php include (TEMPLATEPATH . "/searchform.php"); ?> <?php endif; ?>
Скриншот:
Таким же образом можно выводить еще один цикл в сайдбаре например выведем 10 записей из рубрики с id=34 с отмеченной галочкой «опубликовать на главной», код такой:
<ul class="is_kat"> <?php $posts_new = get_posts('category=34&numberposts=10&meta_key=опубликовать на главной&meta_value=1'); foreach ($posts_new as $post_new) : echo '<li class="news_item"><a href="'; echo get_permalink($post_new->ID); echo '">'; echo mysql2date('j.m.Y', $post_new->post_date); echo ' - '; echo $post_new->post_title; echo '</a></li>'; endforeach; ?> </ul>
Множество вариаций этого кода можно найти в данном топике форума.
Хороший пример, но у меня сделан шаблон как раз для постоянного вывода на главной.
Что значит "постоянный вывод"?
То есть, новости всегда должны выводиться на главной.
а как насчет RSS? оттуда вырезать как-нибудь статью можно, если она не публикуется на главной?
Flector, надо какие-то плагины использовать для вырезания из RSS, но я не озадачивалась таким вопросом, т.к. смысл (для меня) этой «техники» в том, что если ВП используется как CMS для сайта, то на главной можно выводить только актуальные новости/предложения — т.е. я не хочу их скрывать вообще отовсюду, просто показывать на морде действующие предложения и не более. В CMS фид вообще как-то не очень пользуется спросом, контингент не тот :)
Илья, ну так одно другому не мешает:
<?php query_posts($query_string.'&meta_key=опубликовать на главной&meta_value=1&cat=4'); ?>
все зависит от целей и задач :P
у плагина MoreFields есть 2 неприятных глюка:
1. из-за ревизий customfields дублируются
2. если пост "в ожидании публикации", то в день и час Х customfileds сбросятся в null
o_O
... что-то я не совсем понял! А разве последние записи автоматически не публикуются на главной? И куда деваются тогда те, которые не отмечены чекбоксом?
... хорошо, тогда что посоветуете использовать?
Я еще вообще с трудом представляю, зачем нужны кустомы, но до сознания доходит, что с помощью них можно будет значительно расширить возможности создания поиска (advanced search) по значению key и value
По дефолту на главную выводятся все записи -- как лента постов в хронологическом порядке (в конце концов WordPress -- это блоговый движок со всеми вытекающими из этого особенностями!). А если у меня не блог и мне не нужно выводить все подряд записи на главной, а только некоторые посты, причем из разных рубрик?
Остальные записи никуда не деваются, "лежат" себе в своих рубриках, архивах, страницах тегов и т.п.
Вы разберитесь сначала с логикой работы самого WordPress, тогда и вопросов будет меньше и они будут конкретные.
А я и не писал, что его не нужно использовать =) Просто предупредил о глюках. К сожалению потестить другие плагины для customfileds пока еще не дошли руки
Не совсем понятно, что имеется ввиду под advanced search. Например, плагин search-everything и так очень гибко настраивает поиск на блоге (сайте) (... но тоже иммет свот глюки =) )
На то он и учитель, чтобы давать советы... И ученик, :) чтобы внимать ответам на свои бесчисленные вопросы!
Не сердитесь, я еще только учусь!
Плагины поиска пробовал разные, но они все не те... а вот филды думаю помогут делать выборочный поиск из кей и вали
San Miguel, лучший учитель ЭТОТ, зуб даю :)
Насчет плагинов: я предпочитаю Freshpost для сложных проектов и Custom Field GUI для проектов попроще.
... на счет зуба погорячились... потому что мужчина может овладеть всеми 22.. 33, а то и больше! А на счет кодекса, не всегда он говорит! :)
.. уважаю Вас!
...прежде чем посоветовать, пошлите человека на Кодекс куда подальше :)
Муай Тай, не все так просто кажется, как WordPress...
Хочешь овладеть миром, - овладей World Press :)
... извините, #16 перефразирую:
Хочешь овладеть Миром?
- Надавай по морде WordPress!
Поставил Flutter, у меня и так в теме используются custom field, хочу упросить работу для авторов. Есть проблема (была и в TDO MF) с русскими наименованиями полей и форм. Отображаются вопросительными знаками. Кодировка на сайте UTF-8. Не знаете как лечится?
Нашёл. Была обычная ошибка с кодировкой таблиц в базе. На первый взгляд нравится. Буду переводить.
О спаибо (не спам) :)
Sonika, все сделала, плагин загружен, файл conf изменен, в индексе в цикл Луп строчку внесла. В результате, чекбокс на месте, на главной, понятное дело, записей нет. Ставлю галочку- опубликоваить на главной и ничего не происходит. Заменить свой код лупа полностью на код лупа Темы default не получается, индекс перестает вызываться, пишет ошибку. Целый вечер мучалась, все перечитала, но так и не могу понять в чем дело. Может быть у вас есть идеи, в чем я ошибаюсь?
Марина, если Вы поставили плагин On Home Page то ничего делать из нижеперечисленного не надо, плагин работает «автоматически», и цикл в файле-шаблоне своей Темы трогать не нужно. Плагин может не заработать в случае если у Вас в файле-шаблоне (отвечающем за вывод главной страницы) цикл начинается не так:
if ( have_posts() ) : while ( have_posts() ) : the_post();
. Да, и на WordPress 2.7 этот плагин никто не тестировал.Т.е. под стандартным цмклом понимается цикл, начинающийся с
if ( have_posts() ) : while ( have_posts() ) : the_post();
, а Тему default я указала для примера.Sonika, спасибо за ответ, да, луп начинается именно так. Но оба плагина не работают. В "MaxSite - Произвольные поля", появляются графы, но, когда ставлю галочки, не выводят посты на главную. В "On Home Page" почему-то не выводится сам чекбокс в админке. Пока не хватает моих знаний, чтобы разобраться. Но я вышла из положения. Применила custom fileds для вывода на главной, правда, они стали работать, только после внесения в код loop: <?php query_posts .
Может сумбурно написала, я пока новичок в этом деле да и вообще, я собаковод, а не программист (хи-хи). Пока результат достигнут, а дальше буду разбираться. Спасибо за ваши статьи, очень помогают освоить WP.
Пока писала, код "растерялся". Имелся ввиду вот этот код луп:
Да, кстати, можно писать или так:
meta_key=опубликовать на главной&meta_value=1
или так:
meta_key=опубликовать на главной&meta_value=true
Может в этом проблема, нет?
Попробовала, похоже не в этом, снова все пропало, когда вернула: &meta_value=1, опять нормально стало. Странно, столько плагинов поставила, все было ОК. Даже интересно в чем загвоздка...Еще хотела спросить, не дадите наводочку на плагин, который прикрепляет пост сверху на главной? Или, может быть, можно с помощью custom fileds сделать?
Марина, какая у Вас версия ВП? В 2.7 это фича встроенная (при написании поста справа Видимость: Редактировать —> поставить флажок «Закрепить на главной»), для предыдущих версий вордпресса есть плагин wp-sticky
Sonika, версия у меня 2.6.2. В админке вижу призыв обновиться до 2.7. Но, побаиваюсь, ни разу этого не делала, и даже не устанавливала, WP идет предустановленным скриптом у моего хостера. Уже видела скриншоты админки 2.7, вообщем, что называется " и хочется и колется". Было бы интересно знать ваше мнение о 2.7, вы, как продвинутый "ворлдпрессовец" наверняка уже на нем обитаете? Спасибо за наводочку на плагин.
Марина, обновляться лучше всего «вручную», почитайте здесь и здесь.
Sonika, спасибо. wp-sticky, к сожалению не годится, тк выкидывает все предыдущие записи.
а как сделать наоборот? чтобы некоторые новости на главной НЕ ВЫВОДИЛИСЬ?
есть рекламки от туристических фирм, и хотелось бы что бы их видели только при переходе в рубрику рекламок, а все остальные посты шли через главную обычным обозрением
хелп ми ))
версия 2.6.5
МПБ, исключить вывод постов рубрики «рекламок» из вывода на главную стр. с помощью
query_posts('cat=-25')
где 25 это ID исключаемой рубрики. Подробнее в кодексе.sonika, а можно по-подробнее с исключением записей из определённой рубрики в общем списке (на главной и тп). Дело в том, что я чайник и к тому же не знаю английского языка. У меня 2.7 Вп. Уже голову сломал, буду благодарен за ответ!
Никита, разве тут по-английски написано? :/
По Русски. К сожалению кодекс на англ.
Но Вы мне помогли на форуме, за что Вас очень сильно благодарю!
Здравствуйте!
Подскажите пожалуйста, как вывести текст перед постами на главной?
Делаю следующее, в шаблон index перед строчками
вставляю
Но выводит некрасиво и виден этот код.
Также пробовал вставлять
Вывод текста
В этом варианте текста вообще не видно.
Помогите пожалуйста разобраться
Спасибо заранее
(Странно что при посте не видно самих кодов. Заменил в них некоторые буквы на кириллицу)
Здравствуйте.
Сделал, как вы написали (использовал Custom Field Template). После этого на главной бесконечно дублировалась последняя запись.
Прошу совета.
А всё, вроде сделал.
Поставил query_posts('meta_key=homepage&meta_value=1');
перед while (have_posts())
Соника доброго дня.
Пожайлуста, подскажите, уже голову сломал. Не получается ничего) У меня ВП 2.8.6 , поставил Плагин от Макса, чекбокс появился. А вот Изменяю Index.php, ничего не происходит. Тема не дефолтная,я не очень то разбираюсь в PHP) . Есть для вывода еще Page.php и Full-page.php . Содержание приблизительно одинаковое. Не могли бы вы подсказать, где и что делаю не так. Если ставлю Плагин от Ю.Б. то с главной все пропадают, а вот чекбокса нет )
"Ю.Б. написал плагин On Home Page, который «всё сделает сам»." - на последней версии движка (на данный момент) плагин не работает. Да и очень плохо, что уже опубликованные статьи пришлось бы заново открывать, чтобы поставить галочку.
Да. Плагин что то не пашет. Новости с главной он убирает, а вот чекбокса при написании невидно.
Плагин не работает. Отмечаю галочками рубрики, но всё по-старому(((
[...] Еще примеры циклов с использованием custom fields смотрите в статье «Чекбокс «Опубликовать на главной» [...]
[...] Еще примеры циклов Ñ Ð¸Ñпользованием custom fields Ñмотрите в Ñтатье Â«Ð§ÐµÐºÐ±Ð¾ÐºÑ Â«ÐžÐ¿ÑƒÐ±Ð»Ð¸ÐºÐ¾Ð²Ð°Ñ‚ÑŒ на главной» [...]