サポート » 使い方全般 » カテゴリに応じて、サイドバーを切り替えたい

  • 解決済 wpcharlie

    (@wpcharlie)


    超初心者ですが、教えていただけますでしょうか。

    カテゴリに応じてサイドバー自体を別のものに切り替えたいと思って、行き詰っております。
    サイドバーはウイジェットで作成しており、ウイジェットの設定まではなんとかできました。

    sidebar.phpにて、
    <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(1) ) : ?>
    を、
    別のウイジェット
    <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(4) ) : ?>
    と、数字を変更すれば、期待通りの表示までこぎつけたのですが、分岐条件として、よく理解しないまま(試験的にhomeとその他として記述しました)
    <?php if(is_home()):?>
    <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(1) ) : ?>
    <?php else: ?>
    <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(4) ) : ?>
    <?php endif;?>
    のようにしても動作しません。

    条件分岐として、どのような記述をすればいいのか教えていただければと思います。
    1,4の部分を変数として扱えばもっと簡素な記述になるかと思いますが、その書き方もよくわかっていないので、併せて教えていただければうれしいです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • のようにしても動作しません

    if のブロックがグネッてるので

    <?php
    if(is_home()) :
      if(!function_exists('dynamic_sidebar') || !dynamic_sidebar(1)) :
        /* ウィジェットが未設定なら何も表示しない*/
      endif;
    else:
      if(!function_exists('dynamic_sidebar') || !dynamic_sidebar(4)) :
        /* ウィジェットが未設定なら何も表示しない*/
      endif;
    endif;
    ?>

    とすると良いです。

    単一の投稿の話なら

    <?php
    $side = 1;
    if(in_category('2')) $side = 2;
    else if(in_category('4')) $side = 4;
    if(!function_exists('dynamic_sidebar') || !dynamic_sidebar($side)) :
      /* ウィジェットが未設定なら何も表示しない*/
    endif;
    ?>

    とか

    <?php
    $sides = array(
      1 => 1,
      2 => 2,
      4 => 4
    );
    $cat = get_the_category(); $cat = $cat[0];
    if(!function_exists('dynamic_sidebar') || dynamic_sidebar($sides[$cat->cat_ID])) :
      /* ウィジェットが未設定なら何も表示しない*/
    endif;
    ?>

    とかで何とかなる感じです(未検証)。

    トピック投稿者 wpcharlie

    (@wpcharlie)

    すばやい対応ありがとうございます。

    <div id="beta">
    <div id="beta-inner">
    
    <?php
    if(in_category('19') ) :
      if(!function_exists('dynamic_sidebar') || !dynamic_sidebar(4)) :
        /* ウィジェットが未設定なら何も表示しない*/
      endif;
    else:
      if(!function_exists('dynamic_sidebar') || !dynamic_sidebar(1)) :
        /* ウィジェットが未設定なら何も表示しない*/
      endif;
    endif;
    ?>
    </div>
    </div>

    で、カテゴリ19内のシングルページについては希望通りの表示になりました。

    それと、サイドバーから、特定のカテゴリアーカイブを表示した際にも、同様のことがしたいのですが、どのようにすればよろしいのでしょうか。

    希望の表示は下記のとおりです。

    トップなどのサイドバー    アーカイブ       シングルページ
      カテゴリ1    ->   サイドバー1表示  ->  サイドバー1表示
      カテゴリ2    ->   サイドバー1表示  ->  サイドバー1表示
      カテゴリ3    ->   サイドバー1表示  ->  サイドバー1表示   
        :
      カテゴリ19   ->   サイドバー4表示  ->  サイドバー4表示

    現在は、

      カテゴリ19   ->   サイドバー1表示  ->  サイドバー4表示

    となっています。

    重ね重ね申し訳ありませんが、ご教授お願いします。

    トピック投稿者 wpcharlie

    (@wpcharlie)

    自己解決しました。

    というより、教えていただいたとおりのままで、希望通りの動作確認ができました。

    自分で、特定のカテゴリに飛んだときに、別のテーマに切り替えていたため、動作しなかったというおはずかしい原因でした。

    ご丁寧にご回答いただいたkz様、本当にありがとうございました。
    今後ともよろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カテゴリに応じて、サイドバーを切り替えたい」には新たに返信することはできません。