Различный фон-изображение по категориям


Я пытаюсь поместить разные фоновые изображения тела для каждой категории.

body { 
background-color: #000; 
background-image: url(img/bg.png); 
background-repeat: no-repeat; 
background-position: center top; 
font-size: 14px; color: #555; 
font-family: Arial, Helvetica, Verdana, sans-serif; }

Я хочу только разные background-image: url(img/bg.png); для каждой категории.

Я нашел один возможный метод. Вот так:

<link rel="stylesheet" href="" type="text/css" media="screen,projection" /> 
<? php if( is_category(1) ) { ?> 
<link rel="stylesheet" href="" type="text/css" media="screen" /> 
<?php } 
elseif ( is_category (2) ) { ?> 
<link rel="stylesheet" href="" type="text/css" media="screen" /> 
<?php } 
elseif ( is_category (33) ) { ?> 
<link rel="stylesheet" href="" type="text/css" media="screen" /> <?php } 
else { ?> <?php } ?>

Тем не менее, я почти уверен, что это не лучший из возможных способов достижения моей цели, потому что:

1) Он ищет всю таблицу стилей 2) Он делает запросы внутри header.php что может быть не лучшим способом, учитывая скорость страницы

Моя идея состоит в том, чтобы создайте различные классы телосложения:

body.apple { code here }
body.area { code here }
body.usa { code here }
body.bolt { code here }
body.jennifer { code here }

...или что-то еще.

Мне просто нужен php для загрузки разных классов тела из одной таблицы стилей для разных категорий.

У кого-нибудь есть хорошее решение?

Author: supertrue, 2013-02-17

4 answers

Вы можете сделать это с помощью удобной функции Wordpress body_class(). В зависимости от того, используется ли и как он используется в вашей теме, возможно, он уже дает вам то, что вам нужно. Вот как это выяснить:

Проверьте источник вашей страницы, чтобы узнать, есть ли у тега <body> на страницах архива категорий какие-либо классы, содержащие вашу категорию slug: category-apple, category-area, category-usa, и т.д. Обычно они включаются по умолчанию.

  • Если они есть, вы можете использовать их в качестве селекторов в своем CSS: body.category-apple { /* code here */ } и т. д.

  • Если нет, добавьте функцию body_class() в тег <body> в вашей теме, возможно, расположенный в header.php . Это работает следующим образом:

    <body <?php body_class(); ?>>

При необходимости вы можете добавить любой дополнительный класс, который вы хотите, в качестве параметра.

Вот запись в Кодексе Wordpress: http://codex.wordpress.org/Function_Reference/body_class

 4
Author: supertrue, 2013-02-17 20:15:21

Это уже встроено: функция body_class() создает специальные классы для каждой категории:

PHP

<body <?php body_class(); ?>>

Вывод по категории "Дженнифер"

<body class="category-jennifer">
 2
Author: fuxia, 2013-02-17 20:12:51

Если ваша тема использует body_class как и должно быть, тогда у вас уже есть все необходимые классы.

Для категорий у вас должно быть:

  • категория
  • категория-кошачье имя
  • категория-(идентификатор)
  • категория-постраничный -(номер страницы)

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

function load_cat_style_wpse_87295() {
   if (!is_category()) return false;
   wp_register_style( 'catstyle', get_stylesheet_directory().'/path/to/stylesheet', false, null, 'all' );
   wp_enqueue_style( 'catstyle' );
}
add_action( 'wp_enqueue_scripts', 'load_cat_style_wpse_87295' ); 
 1
Author: s_ha_dum, 2013-02-17 20:17:36

Как сказано в других ответах здесь, когда вы находитесь на странице категории, функция body_class уже предоставляет вам класс для текущей категории.

Однако, если вы хотите, чтобы фоновое изображение сохранялось также в сообщениях категории, вы можете использовать код, предоставленный кодексом для функции body_class и фильтра:

// add category nicenames in body class
function category_id_class($classes) {
   global $post;
   foreach((get_the_category($post->ID)) as $category)
        $classes[] = $category->category_nicename;
   return $classes;
 }
 add_filter('body_class', 'category_id_class');
 1
Author: Lea Cohen, 2013-02-17 20:25:40