Задача:
Сделать так, чтобы на главной странице публиковались только посты из определенной рубрики(категории).
Решение:
Вносим изменения в файл index.php темы.
Находим начало цикла (loop), и перед строчкой:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
Добавляем:
<?php query_posts($query_string.'&cat=номер_категории'); ?>
Где номер_категории меняем на нужный номер категории, его можно посмотреть в админке в «Управление» — «Рубрики»
Про параметр query_posts:
http://codex.wordpress.org/Template_Tags/query_posts
Здесь можно найти еще несколько интересных примеров с query_posts, в том числе «как исключить одну категорию из цикла».
UPD 28.05.2007
Можно воспользоваться плагином Category Visibility
UPD 02.10.2007
Если возникли проблемы с навигацией (след. страница, предыдущая страница) при использовании query_posts, то эти ссылки будет полезными:
http://trampampam.ru/blog/wordpress/query_posts/
Еще плагин:
Advanced Category Excluder
К сожалению по окончанию сей не хитрой процедуры, доступной для чтения стала только та категория, которую указал в строке. Во все остальные не пускает даже:(
Значит намудрили что-то. Может шаблонов в папке Темы не хватает нужных.
У меня почему то получается, но при этом исчезает sidebar =(
Здравствуйте sonika!
А не подскажите как сделать так чтобы показывались посты из нескольких выбранных рубрик?
Насколько я знаю (ИМХО в общем :)), с этим проблема: т.е. можно показывать 1 категорию или исключить несколько.
Поэтому предлагаю вывернуться по другому:
несколько блоков на главной, в каждом блоке посты опред. категории (т.е. не общим списком). Сделать можно так:
UPD наврала кажется!
Попробуйте так
Благодарю, оказалось, что всё очень просто)))
подскажите, есть блогролл – в нем две категории, соответственно отображается сперва 1 категория потом за ней сразу вторая. как можно разбить их? сделать так – чтобы в верхнем углу отображался блогролл только содержащий 1 категорию, в нижнем углу – блог ролл только со 2 категорией
Что-то вы не по теме…
да чего уж не по теме? почти тоже – только не на главной а на всех страницах .
У меня вот что то не вышло.
Версия у меня Wp 2.3.1
и код в index.php выглядит так:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
а не как вы написали и я вот перед ним поставил что вы написали т.е. <?php query_posts(‘cat=номер_категории’); ?> номер категории у меня 8.
Полностью вотк ак выглядит:
<?php query_posts(‘cat=8’); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
И у меня вот что вышло теперь пост из это категории под номером 8 выскачил во всех категориях… как это исправить?
значит нет шаблона для категорий (category.php в папке Темы).
тогда так сделайте:
<?php
if (is_home()) {
query_posts(‘cat=8’);
}
?>
что то я не могу аткое найти:(
l/wp-content/themes/****-theme там нету файла category.php
туплю
Если нет category.php, тогда сделайте так, как я написала.
Чего не понятного? 🙂
А можно ли сделать чтобы на одной странице допустим в сайдбаре выводились новости из нескольких категории, и в центральной колонке новости из оставшихся категории? В чем разница технической реализации?
ProSaifer, разница в знаке. В одном месте "cat=1,2,3", в другом "cat=-1,-2,-3".
подскажите как сделать из этого вывод только ссылок с названием статьи?
убрать из шаблона категории
<?php the_content(); ?>
а как определить последнюю созданную категорию?
<?php
if (is_home()) {
query_posts(‘cat=8’);
}
?>
есть ли стандартная функция?
нужно для того чтобы на главной пудликовались только посты из последней созданной категории… что бы не менять постоянно 2 на 3, 3 на 4, а он брал автоматом последний id…
как такое сделать?
Надо думать, что у последней созданной категории самый большой ID. Значит надо получить все idы категорий (get_all_category_ids()) и выбрать максимальный.
Спасибо…
сделал так:
<?php
$cat_idss = get_all_category_ids();
$cat_max = $cat_idss[0];
foreach ( $cat_idss as $cat_id ) {
if ( $cat_id > $cat_max )
$cat_max = $cat_id;
}
if (is_home()) {
query_posts(‘cat=’.$cat_max);
}
?>
Помогите побороть проблему.
Несмотря на указание в index.php
Выводит стабильно 1 новость из категории 10(!). Записи в которую передаются через FeedWordPress.
Помогите решить проблему, пожалуйста, код wp-loop.php, через который выводятся посты:
rolph, а из каких соображений Вы впихнули query_posts внутрь Цикла?
Спасибо! В следующий раз повнимательнее буду.
Интересно, а есть возможность Впихнуть конкретную категорию на конкретную страницу….
есть чудный плагин редиректа для этого, жаль не помню как точно называется
Можно полностью управлять выводом постов на заданные страницы и даже порядком расположения постов на странице.
Перед циклом вставляете 2 строчки.
<?php $name = wp_title(”,false); ?>
<?php if (have_posts()) : query_posts(array(‘category_name’=>$name, ‘orderby’=>title,’order’=>ASC )) ?>
После этого нужно создать категории с именами точно такими же как у страниц и когда пишете пост назначайте ему нужную категорию.
Посты окажутся точно на той странице где Вы и хотели.
Еще способ отображения на главной странице постов только избранной категории (или группы категорий).
Перед циклом пишем следующее:
Спасибо огромное! Всё получилось! Именно то, что хотел!