in_category и вывод разного контента

12
[Удален]
1367

Добрый день.

Есть сайт на wp 2.7.1

Есть шаблон, в котором нужно в зависимости от категории выводить/не выводить контент в 2-х сайдбарах и хедере.

Везде ставлю стандартную проверку:

if(!in_category(id)) :


контент

endif;

Но она работает только в хедере почему-то. Хотя все 3 проверки стоят вне цикла, прописаны идентично.

Как с этим бороться?

Пробовал объявлять свой цикл и делать все такой конструкцией:

$myPosts = new WP_Query();

$myPosts->query('showposts=1');

while ($myPosts->have_posts()) : $myPosts->the_post();
if(in_category(id)) :

контент

endif;
endwhile;

Бесполезно :(

yad0ff добавил 24.06.2011 в 10:53

И еще вопрос: как сделать проверку сразу на принадлежность к 20-30 категориям? в wp 2.7.1 есть поддержка array в аргументах in_category?

H
На сайте с 13.06.2011
Offline
9
#1
yad0ff:

И еще вопрос: как сделать проверку сразу на принадлежность к 20-30 категориям? в wp 2.7.1 есть поддержка array в аргументах in_category?

Есть, курите внимательно кодекс

Слово не воробей. Все не воробей, кроме воробья!
W
На сайте с 21.01.2009
Offline
172
#2

По логике все должно работать.

Можно в принципе обойтись без in_category, в масиве $post хранится вся информация о текущем посте, включая категории, то есть сделать что нибудь типа if ($post->category == 3)

За синтаксис не ручаюсь

[Удален]
#3
yad0ff:
выводить/не выводить контент в 2-х сайдбарах и хедере.

Цикл не забываете завершать после каждого вывода? 🍿

[Удален]
#4
^-^:
Цикл не забываете завершать после каждого вывода? 🍿

Не забываю, конечно)

yad0ff добавил 24.06.2011 в 14:04

weblad:
По логике все должно работать.

Можно в принципе обойтись без in_category, в масиве $post хранится вся информация о текущем посте, включая категории, то есть сделать что нибудь типа if ($post->category == 3)
За синтаксис не ручаюсь

Пробовал, один фиг - сразу в 3-х местах не срабатывает.

H
На сайте с 13.06.2011
Offline
9
#5

прикрепите сам файлик или листинг, пожалуйста) может так быстрее получится найти в чем пробелма

[Удален]
#6

sidebar.pnp

<div id="right-sidebar">

<div class="avtorisacia">
<div id="vklad_auth_menu">
<?php if (!(current_user_can('level_0'))){ ?>
<form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">
<table>
<tr>
<td class="auth_td">Имя </td>
<td><input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" /></td></tr>
<tr>
<td class="auth_td">Пароль </td><td><input type="password" name="pwd" id="pwd" size="20" />
</td></tr>
<tr class="auth_button"><td></td><td><input type="submit" name="submit" value="Вход" class="button" id="auth_but" /></td> </tr>

<tr>

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />

</form>
<td><a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword" class="auth_f">Забыли?</a> </td>
<td><a href="<?bloginfo('url')?>/wp-login.php?action=register" class="auth_f">Регистрация</a>
</td></tr>
</table>
<?php } else { ?>
<a href="<?bloginfo('url')?>/wp-admin/index.php" class="auth_exit">Профиль</a><br />
<a href="<?bloginfo('url')?>/forum/index.php?action=profile" class="auth_exit">Форум</a><br />
<a href="<?bloginfo('url')?>/blog/" class="auth_exit">Блог</a><br />
<a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>" class="auth_exit">Выход</a><br />

<?php }?>
</div>
</div>

<?php if (function_exists (login_with_ajax)) login_with_ajax (); ?>
<div class='opros'>
<label>ОПРОС</label>
<div class='spisok-oprosa'>
<?php if (function_exists('vote_poll') && !$in_pollsarchive): ?>
<?php get_poll();?>
<?php display_polls_archive_link(); ?>
<?php endif; ?>
</div>
<div class='opros-nk'> &nbsp; </div>
</div><!--opros-->


<? if(in_category(429)) {
echo " ";
} else {
?>
<noindex>

//код адсенс

<div class='rs-obiav'>
</div><!--rs-obiav-->
</noindex>
<? } ?>


<div class='rsidebar-baners lsidebar-baners'>
<div class='small-baners'>
</div><!--small-baners-->

</div><!--rsidebar-baners-->

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('RightS') ) : else : endif; ?>

<div class="reiting"><label>СЛУЧАЙНЫЕ</label><ul>

<?php $my_query = new WP_Query('showposts=15&orderby=rand&cat=3,5,6,10,11,12,13,14,20,17,9,19,24,18,15,23,16,21,22');
$xx=1;
while ($my_query->have_posts()) : $my_query->the_post();
?><li><?php echo $xx++;?>) <a href="<?php the_permalink()?>"><?php the_title()?></a></li>
<?php endwhile;?>
</ul>
</div>

</div>
H
На сайте с 13.06.2011
Offline
9
#7

Тут то все в порядке, а сам сайдбар в основной loop входит или нет?


Notes
Since Version 2.5, you can specify categories by name.
Since Version 2.7, you can specify categories by slug.
Since Version 2.7, you can check against several categories.
Since Version 2.7, you can use this function outside the WordPress Loop (during a single post query, presumably)
Since Version 2.7, you can specify any post to test (not just the current one).
[Удален]
#8
Haubergeon:
Тут то все в порядке, а сам сайдбар в основной loop входит или нет?

Нет, он подключается как раз после loop'а.

Но и хедер подключается до loop'а, и там все работает с такой же конструкцией.

H
На сайте с 13.06.2011
Offline
9
#9
yad0ff:
Нет, он подключается как раз после loop'а.
Но и хедер подключается до loop'а, и там все работает с такой же конструкцией.

читаем внимательно кодекс еще раз) пользуемся словариком если что не так)

This tag can be used to test the current post within The Loop or (since Version 2.7) outside the Loop during a single post request. You can use it anywhere if you specify which post you want to test.
[Удален]
#10
Haubergeon:
читаем внимательно кодекс еще раз) пользуемся словариком если что не так)

Эмм, этот тэг используется только в одиночных постах (грубо говоря)?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий