0

WordPressのさまざまなカテゴリページごとにサイドバーウィジェットのクラス名を変更したいのですが、これを行う最善の方法は、functions.phpですべての条件を使用して関数を作成し、必要なクラス名を返すことです。次に、register_sidebar関数のリストタグで関数を呼び出しました。

if (function_exists('register_sidebar')) {
  register_sidebar(array(
   'before_widget' => '<li class="sidebarModule">',
   'after_widget' => '</li><!-- end module -->',
   'before_title' => '<h2 class="moduleTitle "'.set_widget_title_color().'>',
   'after_title' => '</h2>',
  ));
}


function set_widget_title_color() {

    if(is_category('technology')) {
        $color = "catNavColor1_active";
    } elseif(is_category('gadgets')) {
        $color = "catNavColor2_active";
    } elseif(is_category('social-media')) {
        $color = "catNavColor3_active";
    } elseif(is_category('gaming')) {
        $color = "catNavColor4_active";
    } elseif(is_category('other')) {
        $color = "catNavColor5_active";
    }

    return $color;
}

何らかの理由で上記は機能しません。助けてください

ありがとう

4

1 に答える 1

2

register_sidebarsカテゴリがまだ定義されていないとき、プロセスの早い段階で呼び出されると思います。dynamic_sidebar_paramsフィルタを実装してみましたか?WordPress Codexには何も見つかりませんでしたが、この素晴らしい例を見つけました。このトピックに関する他の質問にも完全な回答があります。

dynamic_sidebarこれは、ウィジェットでサイドバーを使用して実装する場合にのみ機能します。この関数はdynamic_sidebar_paramsフィルターを呼び出すためです。静的ウィジェット(ウィジェット管理ページを使用せずにテンプレートで定義)がある場合は、次のように、そのテンプレートコードで関数の呼び出しを追加する必要があります。

<li class="sidebarModule">
<h2 class="moduleTitle <?php echo set_widget_title_color(); ?>">Widget title</h2>
<?php /* Your widget code */ ?>
</li><!-- end module -->
于 2010-02-03T08:17:36.323 に答える