Скрипт if else wordpress

R
На сайте с 01.10.2013
Offline
87
1846

Добрый день. помогите пожалуйста разобраться, как укоротить даный скрипт?

<?php
if (in_category(13)) {
get_template_part('category_articles');
}elseif (in_category(15)) {
get_template_part('category_articles');
}elseif (in_category(16)) {
get_template_part('category_articles');
}elseif (in_category(17)) {
get_template_part('category_articles');
} else {
get_template_part('category_catalog');
} ?>

если пишу:

<?php
if (in_category(13,15,16,17)) {
get_template_part('category_articles');
} else {
get_template_part('category_catalog');
} ?>

то никак не работает, заключал ID в кавычки тоже никак. Спасибо!

Немного упростил:

if (is_category('15') || is_category('20') || is_category('30') || is_category('32'))

Но это все еще много... поделитесь опытом если кто знает, как обойтись просто перечислением по ID?

Capcha
На сайте с 24.10.2008
Offline
47
#1


<?php
$cats = array('13','15','16','17');
$flag = True;
foreach($cats as $cat)
{
if(in_category($cat)){
get_template_part('category_articles');
$flag = False;
break;
}
}
if($flag){
get_template_part('category_catalog');
}
?>
R
На сайте с 01.10.2013
Offline
87
#2
Capcha:

<?php
$cats = array('13','15','16','17');
$flag = True;
foreach($cats as $cat)
{
if(in_category($cat)){
get_template_part('category_articles');
$flag = False;
break;
}
}
if($flag){
get_template_part('category_catalog');
}
?>

Хм. в категориях которые не имеют подкатегорий работает отлично, а в тех категориях где есть под категории или рубрики не пашет...

Тоесть имеем:

Категория 13 (работает)

пост 1

пост 2

Категория 15 (работает)

пост 1

пост 2

пост 3

Категория 16 (не работает)

подкатегория 1

Категория 17 (не работает)

подкатегория 1

подкатегория 2

В самих подкатегориях не отображается, это понятно, так как скрипт расчитан на определенные категории. Но почему он не хочет работать в самой категории 16 и 17?

---------- Post added 06-04-2014 at 07:23 ----------

Решил потестить. подобавлял подрубрики в Категории 13 и 15 все чудесно работает, 16 и 17 так и не работают, значит проблема не в наличии подрубрик.

Спасибо за предложенный вариант буду разбираться, хотя странно както вариант с полным перечисление : if (is_category('13') || is_category('15') || is_category('16') || is_category('17')) работает отлично во всех категориях.

F
На сайте с 04.08.2007
Offline
100
#3

А так


if(in_category(array(13,15,16,17)))

По поводу подкатегорий тут все четко описано

http://wp-kama.ru/function/in_category

R
На сайте с 01.10.2013
Offline
87
#4
FXdom:
А так

if(in_category(array(13,15,16,17)))


По поводу подкатегорий тут все четко описано
http://wp-kama.ru/function/in_category

Замечательно! Исправил только in_category на is_category, но это только в моем случае, так как выше еще идут условия is_page, is_home и так далее.

Спасибо!

R
На сайте с 01.10.2013
Offline
87
#5

Скажите, а существует ли возможность указать условие за исключением определённого id поста или страницы, например имеем:

if (is_page(19)) { действие1 }

else {действие 2}

Но мне это не подзодит, можно ли как то упростить, например:

if (is_page(except 19) {действие 2}

siv1987
На сайте с 02.04.2009
Offline
427
#6

if (! is_page(19)) {действие 2}

R
На сайте с 01.10.2013
Offline
87
#7
siv1987:
if (! is_page(19)) {действие 2}

Работает, спасибо! )

Сейчас столкнулся еще с одной проблемкой.

Есть страница (не категории), у которой есть саб странички а у тех саб старничек еще саб страницы

Как прописать условие для страницы, для её детей и для внуков чтоли =)))

Код:

if (is_page(1)|| $post->post_parent == '1' {do something}

К сожалению работает только на страницу и на её детей, но не "внуков" - не уверен что правильно выразился, сорри если что =)

Конечно можно опять таки сделать , как и всегда делал , перечисление всех страниц типа так:

if (is_page(1)|| $post->post_parent == '1'|| $post->post_parent == '1,1'|| $post->post_parent == '1,2'|| $post->post_parent == '1,3') {do something};

Но когда этих подстраниц много, то это не походит, надо решение подобное первому, но чтобы подключало все сабы и сабы сабов =(

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