1

Тема: Исключить определенную категорию с главной

ОДИН ИЗ ВАРИАНТОВ:

Основной цикл (loop) для файла index.php темы будет выглядеть так:

<?php $top_query = new WP_Query('cat=-1&showposts=10'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post();
$first_post = $post->ID; ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h2><a href="<?php the_permalink() ?>" rel="bookmark"
title="Permalink: <?php the_title(); ?>"><?php the_title();
?></a></h2>
<div class="entry">
<?php the_content('Далее…'); ?>
</div>
</div>
<?php endwhile; ?>

Исключена категория  с id=1 (cat=-1)
Выводятся посл. 10 постов (showposts=10)

UPD 28.05.2007
Можно воспользоваться плагином Category Visibility

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

2

Re: Исключить определенную категорию с главной

не не работет исключение в версии 2.0.10, хоть убейся:)

3

Re: Исключить определенную категорию с главной

во, вроде заработало только вместо new WP_Query('cat=-1&showposts=10'); ?> пставьте category а не cat

4

Re: Исключить определенную категорию с главной

нет, я ошибся, не работает..ни так ни так..

5

Re: Исключить определенную категорию с главной

Приведеный код рабочий, скорее всего вы где-то у себя ошиблись.

Злой админ

6

Re: Исключить определенную категорию с главной

Код не рабочий, сообщение не показывается, но нет перехода в раздел который исключен

7

Re: Исключить определенную категорию с главной

сделал так - привинтил файл functions.php в theme, в нем:

<?php
function myFilter($query) {
if ($query->is_feed || $query->is_home || $query->is_archive) {
        $query->set('cat','-2');
    }

return $query;
}

add_filter('pre_get_posts','myFilter');
 ?>

Код позволяет исключить категорию с главной или несколько, также исключает эту же категорию из фида
Правда не работает исключение поста на главной, но с второстпеенных страниц, типа page/2/ и т д

8

Re: Исключить определенную категорию с главной

sonika а куда это вставлять, я несовсем понял? в любое место на главной странице

9

Re: Исключить определенную категорию с главной

Смотря куда надо, если для главной— то в index.php темы вместо станд. цикла, который начинается с
<?php if (have_posts()) : ?>
и заканчивается примерно так:
<?php endif; ?>

Но вообще-то, если Вы читали комменты, этот код вроде не работает (я взяла его из Кодекса и не проверяла)
Присмотритесь коментом выше вашего, что писал euseller

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

10

Re: Исключить определенную категорию с главной

А можно поподробнее описать способ euseller в папки темы создать файл functions.php туда вставить данный код, что дальше? всё?

11

Re: Исключить определенную категорию с главной

Exact,
да, в папке вашей темы создать файл с тем содержимым, что я указал, в файл header.php шаблона включить этот файл в обработку:
<?php require_once get_template_directory()."/functions.php"; ?>
все, вроде больше ничего не надо.

12

Re: Исключить определенную категорию с главной

появился новый вопрос : я хочу исключить показ категорию из постов, на главной пишется после поста:
Категория: Блог, Индекс, Интернет - Править - Комментировать
Вот мне надо чтобы не писалось в перечислении категорий допустим Индекс, но чтобы пост в этой категории находился, и в сайдбаре зайдя в категорию Индекс можно было увидеть пост.

13

Re: Исключить определенную категорию с главной

никто не знает или на совсем ясно объяснил?))

14

Re: Исключить определенную категорию с главной

Товарищи, проблема не решена. Как же всё-таки сделать, чтобы одна из категорий на главной не отображалась?
Неужели из-за такой мелочи надо ставить сомнительный плагин Category Visibility, от которого посты троятся? Вывод одной категории решается одной строчкой, как же всё-таки сделать обратное?

15

Re: Исключить определенную категорию с главной

С functions.php не получилось?

Попробуйте такой способ из Кодекса:
http://codex.wordpress.org/Template_Tags/query_posts#Exclude_Categories_From_Your_Home_Page

Перед началом Цикла (<?php if (have_posts())  блаблабла) в index.php вставьте:

<?php
   if (is_home()) {
      query_posts("cat=-3");
   }
?>

Единственное условие — в Вашей теме index.php не отвечает за вывод всех типов записей, т.е. присутствуют также шаблоны single.php, page.php, category.php или archive.php

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

16

Re: Исключить определенную категорию с главной

Про funktions.php было написано, что на последующих страницах новостей он не работает, это мне не подходит.

sonika, спаибо! Последний способ сработал. Просто я хотел отделить events calendar 3 посты от новостей. В этом плагине, кстати есть такая функция, но тогда они вообще нигде выводиться не будут. А для events хочу отдельную страницу создать. Вот и всё.

17

Re: Исключить определенную категорию с главной

Пожалуйста! smile
Кстати, в своем предыдущем сообщении я кажется приврала немного насчет «единственного условия», сорри smile

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

18

Re: Исключить определенную категорию с главной

Нашёл всё-таки неисправность. При добавлении кода архивные страницы новостей page/2, page/3... не отображаются, вместо них загружается первая страница новостей. Как можно это пправить?

19

Re: Исключить определенную категорию с главной

http://trampampam.ru/blog/wordpress/postranichnyiy-vyivod-zapisey-v-kategorii/

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

20

Re: Исключить определенную категорию с главной

Спасибо, данное решение помогло в том разделе, где надо было отобразить только одну категорию. Но там, где надо её исключить при добавлении:

$numpost=10;//сколько записей в обычной категории
if($paged>1) $offset=$numpost*($paged-1);
else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница категории

Первая страница продолжает отображаться на страницах архива. А при добавлении:

$posts = get_posts('numberposts='.$numpost.'&category='.$cat.'&offset='.$offset);
foreach($posts as $post) : start_wp();
setup_postdata($post);
название записи, автор записи, анонс записи
endforeach;

Порядок, но при этом показываются все рубрики без исключения. Видимо query_posts в связке с ними не работает.

Кстати понял, почему  Category Visibility работает с косяками. Если одна новость под более чем одной рубрикой, то будет она отображаться столько раз, в скольких рубриках она находится. Нашёл и другой самописный плагин, исключающий одну рубрику, но проблема с ним та же, что и с  Category Visibility.

Пробую с functions.php, но там у меня уже прописано:


<?php
if ( function_exists('register_sidebar') )
    register_sidebar();
?>

Если добавляю:

<?php
function myFilter($query) {
if ($query->is_feed || $query->is_home || $query->is_archive) {
        $query->set('cat','-15');
    }

return $query;
}

add_filter('pre_get_posts','myFilter');
 ?>

меняется кодировка на Западноевропейскую ISO(блог в UTF-8), а админка вообще отказывает в работе. Хотя задача выполняется и страницы листаются как надо. Подскажите, что сделать, чтобы победить это на данном этапе?

Надеюсь, ещё не утомил smile Сам второй день мучаюсь wink

21

Re: Исключить определенную категорию с главной

Ну, всё, проблема решена. Добавил строки в functions.php через FTP клиент. Теперь заработало. Спасибо всем за помощь.

22 (22-08-2007 11:37:19 отредактировано ariana)

Re: Исключить определенную категорию с главной

sonika пишет:

С functions.php не получилось?

Попробуйте такой способ из Кодекса:
http://codex.wordpress.org/Template_Tags/query_posts#Exclude_Categories_From_Your_Home_Page

Перед началом Цикла (<?php if (have_posts())  блаблабла) в index.php вставьте:

<?php
   if (is_home()) {
      query_posts("cat=-3");
   }
?>

я сделала, но не получилось. отображаются все темы.
скажите, а для того чтобы этот код работал, должна существовать страница home.php?

23

Re: Исключить определенную категорию с главной

нет, home.php иметь не обязательно.

Что именно Вы сделали?
Создали файл  functions.php в папке своей Темы и заполнили его по инструкции, которую дал euseller?
http://forum.maxsite.org/viewtopic.php?pid=3275#p3275

Или вписали в файл index.php своей Темы строчку

<?php
   if (is_home()) {
      query_posts("cat=-3");
   }
?>

ПЕРЕД началом цикла

Почему могло не работать: если у Вас версия wp 2.0.x, то такой «финт» с index.php не проходит…

Едет вебмастер в поезде и слышит: <td></td> … <td></td> … <td></td>
шаблоны Темы

24

Re: Исключить определенную категорию с главной

у меня WP 2.2.1

я вставила код перед началом цикла. Вот так оно выглядит:

<?php get_header(); ?>

    <div id="content" class="narrowcolumn">

<?php
   if (is_home()) {
      query_posts("cat=-4");
   }
?>
<?php if (have_posts()) : ?>
        
        <?php while (have_posts()) : the_post(); ?>
                
            <div class="post">
                <h2 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2>
                <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
                
                <div class="entry">
                    <?php the_content('Читать полностью &raquo;'); ?>
                </div>
        
                
                <!--
                <?php trackback_rdf(); ?>
                -->
            </div>
    
        <?php endwhile; ?>

25

Re: Исключить определенную категорию с главной

нашел такое работающее решение здесь:

в index.php вместо:

<?php if(have_posts()): ?><?php while(have_posts()):the_post(); ?>

вставить:

<?php
$query='cat=ID&paged='.$paged;
if (have_posts()) :
    if (is_home()) {
        query_posts($query);
        }
?>
<?php while(have_posts()):the_post(); ?>
WP rocks & rolls!