2016-06-16 6 views
0

デフォルトでは、の例では、多くの便利なウィジェットがあります。カテゴリウィジェット。今では私たちは$widget_ops配列のオプションを持っているwp_includes /ウィジェット/クラスカテゴリ-widget.phpwordpress core widgetを拡張するには?

class WP_Widget_Categories extends WP_Widget 
{ 
    /** 
    * Sets up a new Categories widget instance. 
    * 
    * @since 2.8.0 
    * @access public 
    */ 
    public function __construct() 
    { 
     $widget_ops = array(
      'classname' => 'widget_categories', 
      'description' => __('A list or dropdown of categories.'), 
      'customize_selective_refresh' => true, 
     ); 
     parent::__construct('categories', __('Categories'), $widget_ops); 
    } 
    //... 
} 

に位置クラスWP_Widget_Categoriesに見て、私はクラス名widget_categoriesを編集したいです。

検索ウィジェット

public function __construct() 
{ 
    $widget_ops = array(
     'classname' => 'widget_search', 
     'description' => __('A search form for your site.'), 
     'customize_selective_refresh' => true, 
    ); 
    parent::__construct('search', _x('Search', 'Search widget'), $widget_ops); 
} 

との別の例は、いつか私たちはここにいくつかの文字列を編集する必要があります。

どのようにこれらのクラスを拡張できますか?もちろん、これらのコアファイルを編集したくない場合

+0

なぜクラス名を変更しますか? – Jrod

+0

@Jrob:これはコアファイルなので、新しいバージョンに更新した後に変更されます –

+0

はい私はそれがコアファイルであることを知っていますので、変更しないでください。私は最初にクラス名を変更する理由を尋ねています。これはカテゴリウィジェットに適用されるCSSクラスで、そのクラスを使用してスタイルウィジェットを作成できます。では、クラス名の変更はどのような目的に役立ちますか?あなたが達成しようとしている最終目標を理解していれば、より良い答えを提供することができます。 – Jrod

答えて

1

カスタムクラスをすべてのウィジェットに追加する場合は、サイドバーを登録するときにこれを行うことができます。 before_widgetパラメータは、クラス名が出力される場所です。あなたがより細かく制御したい場合

<?php  
add_action('widgets_init', 'theme_slug_widgets_init'); 
    function theme_slug_widgets_init() { 
     register_sidebar(array(
      'name' => __('Main Sidebar', 'theme-slug'), 
      'id' => 'sidebar-1', 
      'description' => __('Widgets in this area will be shown on all posts and pages.', 'theme-slug'), 
      'before_widget' => '<li id="%1$s" class="widget %2$s">', // this is where you would add additional classes 
      'after_widget' => '</li>', 
      'before_title' => '<h2 class="widgettitle">', 
      'after_title' => '</h2>', 
     )); 
    } 

あなたはサイドバーにウィジェットをループにdynamic_sidebar_paramsフィルタを使用AN特定のウィジェットのbefore_titleのparamaterを変更することができます。

add_filter('dynamic_sidebar_params', 'my_dynamic_params'); 

function my_dynamic_params($params) { 

    foreach ($params as $key => $param) { 

     // check to see if the widget is a category widget 
     if ($param['widget_name'] == 'Categories') { 
      $params[$key]['before_widget'] = '<li id="' . $param['widget_id'] . '" class="widget my-custom-class">'; 
     } 
    } 

    return $params; 
} 
+0

ありがとうJrobありがとうございました。 –

関連する問題