Чекбокс «Опубликовать на главной»

[ ←Вернуться к стандартному виду ]

Печатная версия

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.'&amp;meta_key=опубликовать на главной&amp;meta_value=1'); ?>

Все готово!

Стандартный цикл (луп) начинается с и заканчивается строчкой

Только для WordPress 2.6 и выше

Для тех, кто совсем в танке :) привожу полный код лупа Темы default с нужной строчкой query_posts в начале:

<?php query_posts($query_string.'&amp;meta_key=опубликовать на главной&amp;meta_value=1'); ?>
<div id="post-&lt;?php the_ID(); ?&gt;" class="post">
<h2><a title="&lt;?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?&gt;" rel="bookmark" href="&lt;?php the_permalink() ?&gt;"></a></h2>
<small> by </small>
<p class="postmetadata">'); ?&gt;  |</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 &amp;raquo;', '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 &amp;#187;', 'kubrick'), __('1 Comment &amp;#187;', 'kubrick'), __('% Comments &amp;#187;', 'kubrick')); ?></p>
</div>
<?php endforeach; ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link(__('&amp;laquo; Older Entries', 'kubrick')) ?></div>
<div class="alignright"><?php previous_posts_link(__('Newer Entries &amp;raquo;', '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&amp;#8217;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&amp;numberposts=10&amp;meta_key=опубликовать на главной&amp;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>

Множество вариаций этого кода можно найти в данном топике форума.


Комментариев: 44, оставить свой »

Страницы: [5] 4 3 2 1 » Показать все

  1. # 44 Pingback Как работать с произвольными полями (custom fields) в WordPress? | Выживи сам 22.09.2015 в 18:26

    [...] Еще примеры циклов с использованием custom fields смотрите в статье «Чекбокс «Опубликовать на главной» [...]

  2. # 43 west0293 (1) 25.02.2011 в 17:24

    Плагин не работает. Отмечаю галочками рубрики, но всё по-старому(((

  3. # 42 Дадон (1) 25.09.2010 в 10:46

    Да. Плагин что то не пашет. Новости с главной он убирает, а вот чекбокса при написании невидно.

  4. # 41 Олег (11) 03.02.2010 в 01:36

    "Ю.Б. написал плагин On Home Page, который «всё сделает сам»." - на последней версии движка (на данный момент) плагин не работает. Да и очень плохо, что уже опубликованные статьи пришлось бы заново открывать, чтобы поставить галочку.

Страницы: [5] 4 3 2 1 » Показать все

Написать комментарий


Ручная модерация комментов. Все саттелиты — в топку! Даже не сомневайтесь. Для вопросов о вордпресс не по теме поста есть два русскоязычных форума по wordpress.


Подписаться, не комментируя

[ ←Вернуться к стандартному виду ]

Печатная версия