web-dev-qa-db-ja.com

カテゴリーによる背景画像の違い

カテゴリごとに異なるボディの背景画像を配置しようとしています。

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が必要です。

誰かが良い解決策を持っていますか?

1
Meigo62

あなたはWordpressの便利なbody_class()関数を使ってこれをすることができます。それがあなたのテーマで使われているかどうかそしてどのように使われているかによって、それはすでにあなたにあなたが必要とするものを与えているかもしれません。これを調べる方法は次のとおりです。

カテゴリアーカイブページの<body>タグにカテゴリスラッグを含むクラスがあるかどうかを確認するには、ページのソースを確認します。category-Applecategory-areacategory-usaなど。これらは通常デフォルトで含まれます。

  • もしあれば、あなたのCSSのセレクタとしてこれらを使うことができます:body.category-Apple { /* code here */ }.

  • そうでない場合は、おそらくheader.phpにある、テーマの<body>タグにbody_class()関数を追加します。それはこのように動作します:

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

必要に応じて、パラメータとして追加のクラスを追加できます。

これがWordpress Codexのエントリです。 http://codex.wordpress.org/Function_Reference/body_class

4
supertrue

これはすでに組み込まれています。関数body_class()はカテゴリごとに特別なクラスを作成します。

PHP

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

カテゴリ "jennifer"での出力

<body class="category-jennifer">
2
fuxia

あなたのテーマが本来あるべき body_class を使っているのであれば、あなたはすでにあなたが必要とするすべてのクラスを持っています。

カテゴリについては、あなたが持っている必要があります:

  • カテゴリー
  • カテゴリ猫の名前
  • category-(id)
  • category-paged-(ページ番号)

カテゴリルールがたくさんある場合は、カテゴリアーカイブ専用のスタイルシートを条件付きで読み込むことをお勧めします。あなたがほんの少しのルールしか持っていないなら、それはそれの価値がありません。メインスタイルシートにそれらを含めるだけです。

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
s_ha_dum

ここで他の答えで述べたように、あなたがカテゴリページにいるとき、body_class関数はすでにあなたに現在のカテゴリのためのクラスを提供します。

ただし、background-imageをカテゴリの投稿にも残しておきたい場合は、body_class関数の codexによって提供されるコードを使用して、フィルタをかけることができます

// 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
Lea Cohen