サポート » テーマ » カテゴリーインデックスのデザインが最新記事が別のカテゴリーにも属していると別のカテゴリーのデザインになってしまう

  • 解決済 shinchaya

    (@shinchaya)


    カテゴリーごとにデザインを変えるためにis_category(‘スラッグ’)でif分岐をしているのですが、最新投稿に別のカテゴリーにも属するものがあると、デザインが別のカテゴリーのものになってしまったりするのですが、どうすれば回避できるでしょうか。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • こんにちは

    どのようなコードを書かれているのでしょうか?
    実際のコード(フローが分かる最小限)を提示してもらった方が解決までの道は早いのではないかと思います。

    最新投稿に別のカテゴリーにも属するものがあると

    最新投稿に影響を受けるということなので、グローバル変数の $wp_query が上書きされている(query_posts のループ内等)のではないでしょうか。
    この場合、$wp_query を元にしている is_category() ではカテゴリーアーカイブの判定はできません。
    is_category() の代わりに、グローバル変数 $cat(カテゴリー ID)で判定してみてはどうでしょうか。

    $catobj = get_category( $cat );
    if ( $catobj->slug == 'スラッグ' )
    トピック投稿者 shinchaya

    (@shinchaya)

    ご回答ありがとうございます。

    $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

    • この返信は4年、 9ヶ月前にnobitaが編集しました。
    トピック投稿者 shinchaya

    (@shinchaya)

    @ishitaka さま

    if ( is_category( '●●' ) || ( !is_category() && in_category( '●●' ) ) )

    こちらで表示が期待どおりになりました。

    @gblsm さま
    @nobita さま

    みなさまありがとうございました。
    本件につきましては一応の解決をみましたので、これで閉じさせていただきます。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カテゴリーインデックスのデザインが最新記事が別のカテゴリーにも属していると別のカテゴリーのデザインになってしまう」には新たに返信することはできません。