Главная    Реклама    Об авторе    Muzzлог Зарубина    Кладбище полезностей    Зигзаг сайтов

Wordpress В Качестве CMS или Небольшой Хак

13.12.2007 от Андрей Зарубин

Wordpress’oм нынче мало кого удивишь. Особенно в блоггерской среде. Однако если посмотреть на нетрадиционное его использование в качестве CMS-движка для контентных сайтов, то тут у новичков обычно возникают определенные вопросы.

Как сделать так, чтобы на главной странице вместо последних постов в выдаче были только последние посты одной рубрики?

Как задавить ненужную (родительскую) рубрику в сайдбаре и запретить ее (и ее подрубрик) вывод?

Как сделать так, чтобы было 2 колонки с рубриками (справа и слева в сайдбарах), причем в каждой из них выводились только подрубрики определенной рубрики, а не все рубрики сразу?

Начну с начала. Данные в wordpresse хранятся в виде постов. Чтобы не заморачиваться лишний раз и создавать отдельные страницы (хотя можно вопрос решить и так), выход я выбрал такой: выводить посты исходя из их рубрики (category).

Чтобы не выводить посты какой-то категории (или нескольких категорий) в постах (или анонсах постов) нужно в index.php активной темы прописать следующую строку:

<?php query_posts(’cat=-32); ?>

Где 32 это ID рубрики, посты которой нужно запретить к выводу. ID можно посмотреть в админке wordpress зайдя в Управление -> Рубрики. Знак минус перед ID говорит движку wordpress о том, что все посты рубрики с ID 32 выводить не нужно. Если вы не хотите выводить несколько рубрик, то нужно просто перечислить их через запятую, не забывая ставить перед каждым ID знак минуса:

<?php query_posts('cat=-32,-33,-34'); ?>

В данном примере не будут выводиться посты из рубрик с ID равными 32, 33, 34. Для чего это может быть нужно? Например, в БД хранятся статьи и другая информация, а на главную страницу вы хотите выводить только статьи. Убрав все лишние рубрики, вы выводите только то, что вам нужно.

Далее, часто нужно чтобы в меню (в сайдбаре) выводились посты только одной рубрики или нескольких, но определяемых вами. По умолчанию туда выводятся вообще все рубрики. Для того, чтобы запретить вывод рубрик(и), нужно найти в sidebar.php строку кода где описывается вывод рубрик. Она должна располагаться ПОСЛЕ КОДА

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Right Sidebar') ) : else : ?>

и иметь примерно такой вид

<?php wp_get_categories ('здесь параметры, которые могут отличаться в зависимость от используемой темы'); ?>

Для запрет вывода рубрики с ID равным 32, нужно прописать в этой строке параметр exclude равный 32 (exclude=32). Выглядеть это будет так (при условии, что в строке нет других параметров):

<?php wp_get_categories ('exclude=32'); ?>

Теперь в сайдбаре не будет выводиться рубрика с ID равным 32. Чтобы не выводить сразу несколько рубрик с разными ID, нужно просто перечислить из через запятую.

Признаюсь честно, в моей теме эта фича не работала, и чтобы запретить вывод рубрик в левом сайдбаре, мне пришлось лезь аж в widgets.php (это уже не тема, а движок wordpress) и вставлять там exclude, только тогда это заработало. Но в других темах работает и обычный метод.

Дальше мне нужно было, чтобы в третьей колонке выводился список постов одной рубрики. Я сделал это следующим образом:

В файл sidebar.php ДО КОДА

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Right Sidebar') ) : else : ?>

Вставил код вызова рубрик нужной мне рубрики

<?php
$posts_new = get_posts('category=33&numberposts=20');
foreach ($posts_new as $post_new) :
    echo '
<li class="news_item"><a href="'
;
    echo get_permalink($post_new->ID);
    echo ‘”>’;
    echo $post_new->post_title;
    echo ‘</a></li>
<p>‘;
endforeach;
?>

Данный код выводит в сайдбаре 20 постов рубрики с ID равным 33. Также можно туда забить несколько ID и увеличить/уменьшить количество выводимых постов. Можно изменить формат и стили вывода по своему вкусу.

Надеюсь это кому-то пригодиться!

PS: Вся вышенаписанная информация была найдена на форумах посвященых wordpress, в частности forum.maxsite.org

» Abonner au RSS! «

Рубрики: wordpress |

Комментарии (10)

  1. Михаил пишет:

    Спасибо, пригодится!
    Я действительно новичок с WordPress’ом и многие вещи приходится искать через поисковики или ковырять код самому - что не очень интересно…

  2. Андрей Зарубин пишет:

    Сам такой же :)

  3. Denis Streha пишет:

    хороший фак. Продолжение надеюсь будет?

  4. Андрей Зарубин пишет:

    Все зависит от того, буду ли я еще мучать wordpress :twisted:

  5. Леонид пишет:

    Действительно, полезная информация!
    Очень пригодится в последующих web-проектах.А то думал, опять за Jooml’у взяться.

  6. Андрей Зарубин пишет:

    На самом деле на том форуме, что я указал в постскриптуме, дофига полезной инфы по настройке вордпресса

  7. ludmila пишет:

    Здравствуйте,
    у меня вопрос не совсем по теме, но очень важный для меня.
    Помогите, пожалуйста, разобраться: как вывести на странице “Контакты” в wordpresse форму для связи так, чтобы она отражалась только на этой странице, а на других страницах ее не было?
    Буду очень благодарна за помощь.
    Людмила

  8. Андрей Зарубин пишет:

    ludmila, напишите мне на мыло, указав в письме свою аську и мы чего-нибудь придумаем :)

  9. LexxZone пишет:

    Как раз искал подобную инфу. Спасибо. Все практично!

  10. Habrenko пишет:

    Отличная статья !
    Так держать!

Оставить комментарий