こんにちは
どのようなコードを書かれているのでしょうか?
実際のコード(フローが分かる最小限)を提示してもらった方が解決までの道は早いのではないかと思います。
最新投稿に別のカテゴリーにも属するものがあると
最新投稿に影響を受けるということなので、グローバル変数の $wp_query が上書きされている(query_posts のループ内等)のではないでしょうか。
この場合、$wp_query を元にしている is_category() ではカテゴリーアーカイブの判定はできません。
is_category() の代わりに、グローバル変数 $cat(カテゴリー ID)で判定してみてはどうでしょうか。
$catobj = get_category( $cat );
if ( $catobj->slug == 'スラッグ' )
ご回答ありがとうございます。
$catobj = get_category( $cat );
if ( $catobj->slug == 'スラッグ' )
残念ながらご教授いただいたコードでしたがエラーして何も表示しませんでした。
header.php に下記のようなコードを記述していました
<?php if ( is_category(‘brillant’) || in_category(‘brillant’) ) : ?>
<img src=”key_brillant.jpg” alt=”Brillant”>
<?php elseif ( is_category(‘moderno’) || in_category(‘moderno’) ) : ?>
<img src=”key_moderno.jpg” alt=”Moderno”>
<?php elseif ( is_category(‘noir’) || in_category(‘noir’) ) : ?>
<img src=”key_noir.jpg” alt=”Noir”>
<?php endif; ?>
以下のように書き換えてみましたが結果は変わりませんでした
if ( is_category( '●●' ) || ( is_single() && in_category( '●●' ) ) )
こんにちは
「カテゴリーインデックス」とはカテゴリーアーカイブページのことかなと判断したのですが、提示のコードからするとカテゴリーアーカイブページおよび投稿ページ(シングルページ)の両方が対象ということだったんですね。
グローバル変数 $cat はカテゴリーアーカイブページの場合のみ有効な変数であり、それ以外のページ(投稿ページ等)では無効なので、前回の回答のコードでは機能しません。
if ( is_category( '●●' ) || ( is_single() && in_category( '●●' ) ) )
そうなると、@shinchaya さんのコードでいいような気がしますが・・・。
試しに、下記のコードではどうでしょうか?同じことなんですがね・・・。
if ( is_category( '●●' ) || ( !is_category() && in_category( '●●' ) ) )
@shinchaya さんの if-elseif-endif 形式のコードでは、ある投稿に3つ全部のカテゴリー(brillant, moderno, noir)が付いている場合、投稿ページのパーマリンクを直に表示させると必ず brillant のデザインになります。
brillant ではなく moderno または noir を選びたいのは、もしかするとカテゴリーアーカイブページから個別投稿ページへ飛んできた時でしょうか。その場合は、直前のページがどのカテゴリーアーカイブだったかを判断するしかないですね。
こんにちは、
1.やりたい事は、カテゴリーごとのアーカイブのヘッダー画像をそれぞれのカテゴリーにふさわしい画像にするという事で、いいでしょうか?
2.それとも、アーカイブのループの中で 特定のカテゴリーの投稿の場合に、アイキャッチ画像などを変更するという事でしょうか?
1の場合だと、body_class() 2の場合だと、post_class() が出力するClassをチェックしてみてください。
WordPressは、カテゴリーに関連する動的クラスを出力するようになっているので、CSSで調整してみてはどうでしょうか?
CSSで、調整する場合だと、背景画像での処理になってしまいますが、img画像を使いたいという場合は、同様の事をjavascriptで出来ると思います。
body_class() post_class()が出力するクラス一覧は、個人的なメモですが、
Starter CSS – CSS note
@ishitaka さま
if ( is_category( '●●' ) || ( !is_category() && in_category( '●●' ) ) )
こちらで表示が期待どおりになりました。
@gblsm さま
@nobita さま
みなさまありがとうございました。
本件につきましては一応の解決をみましたので、これで閉じさせていただきます。