PHP / WordPress: как перетащить специфические для категории боковые панели в тему - PullRequest
0 голосов
/ 12 декабря 2011

Я пытаюсь сделать так, чтобы наш вызов темы WP появлялся на определенной боковой панели, когда пользователь попадает на отдельную страницу статьи / постоянной ссылки.Категория поста будет определять, какая боковая панель будет загружена. Пример: если пользователь попадает на постоянную ссылку / специальную страницу статьи для поста, классифицированного как «красный», тогда тема будет искать категорию поста, признавая, что категория красная,а затем найдите и потяните в боковой панели, которую я определил как «красный».

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

Вот как я думаю, код должен выглядеть так:

<?php if (is_category()){  
$current_cat = intval( get_query_var('cat') );  
get_sidebar($current_cat);  //for category red get sidebar-red.php
} 
?>

Еще одна часть головоломки:

Я хочу добавить аргумент добавления, чтобы, если публикация не классифицирована (то есть мы не классифицировали публикацию по какой-либо причине), она будет перемещаться в боковую панель по умолчанию.,Я думаю, что код должен нравиться что-то вроде этого, но я не знаю, как определить «несуществующую категорию».В основном я хочу сказать WordPress искать категорию постов.Если он обнаружит, что он не существует, то я хочу, чтобы он вытащил в sidebar-default.php

<?php
if (is_category()){  
   $current_cat = intval( get_query_var('cat') );  
   get_sidebar($current_cat); } 

elseif (is_category(**argument for nonexistent category**))   
   $current_cat = intval( get_query_var('cat') );  
   get_sidebar-default.php;  } 
?>

Ответы [ 3 ]

1 голос
/ 12 декабря 2011

Вы должны использовать in_category, а не is.

Например:

<?php
if ( in_category('fruit') ) {
    get_sidebar('1');
} elseif ( in_category('vegetables') ) {
    get_sidebar('2');
} else {
    // do nothing or something
            // ...
}
?>

http://codex.wordpress.org/Function_Reference/in_category

<?php in_category( $category, $_post ) ?>

$category

(смешанный) (обязательно) Одна или несколько категорий, указанных идентификатором (целое число), имя или слаг (строка), или массив этих По умолчанию: Нет

0 голосов
/ 12 декабря 2011

Вы даже можете использовать Шаблоны категорий , поэтому вы создаете файлы category-red.php и category-blue.php

0 голосов
/ 12 декабря 2011

Вы можете иметь различные классы боковой панели, определенные в вашем CSS.

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

Вот немного о том, как получить слаг:

<?php
if (is_category( )) {
$cat = get_query_var('cat');
$yourcat = get_category ($cat);
echo 'the slug is '. $yourcat->slug;
}
?>

Так что ваш div боковой панели будет выглядеть примерно так:

<div class="<?php echo yourcat->slug; ?> sidebar"></div>

Итак, вы дали своей боковой панели два класса, один из которых называется sidebar, а другой должен определяться независимо от категории!

Надеюсь, это имело смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...