web-dev-qa-db-ja.com

WordPressでウィジェットを編集する方法

[表示] - > [ウィジェット]メニューには、ドラッグアンドドロップでサイドバーに表示できるウィジェットのリストがあります。

これらのカスタムウィジェットのHTML/PHPコードはどこにありますか?

私はWordPressの関数リファレンスを見てきましたが、何も見つかりませんでした。きっとこれらのウィジェットはHTML/PHPテンプレートから引っ張られなければなりません。

私が知りたいのは、デフォルトでウィジェットのタイトルが<h3>タグで、それを<h5>タグに変更したいからです。また、<hr />やその他のものを追加する必要があります。

theme/includes/widgets.phpファイルを調べましたが、何も見つかりませんでした。

ちなみに私のテーマを変更するためにTwenty Elevenのコピーを使っています。

theme/sidebar.phpのコードは(!dynamic_sidebar())のためのものですが、私のサイドバーdynamicなので、このコードは役に立ちません。

7

WordPress Widgets API は、さまざまなウィジェットの作成方法とサイドバーの登録方法です。

新しいウィジェットを作成するときには、任意のウィジェットに追加できる変数があります。それらは register_sidebars 引数からそれらの値を得ます。

args (文字列/配列)(オプション)
'name'と 'id'の値に基づいてサイドバーを構築します。デフォルト:なし
name - サイドバーの名前。
id - サイドバーのID。
before_widget - 各ウィジェットの前に配置するHTML。
after_widget - 各ウィジェットの後に配置するHTML。
before_title - すべてのタイトルの前に配置するHTML。
after_title - すべてのタイトルの後に配置するHTML。

例:

<?php
    add_action( 'widgets_init', 'prefix_register_sidebars' ); 
    function prefix_register_sidebars() {
         $args = array(
         'name' => 'My Sidebar',
         'id'   => 'my-sidebar',
         'before_widget' => '<div id="%1$s" class="widget %2$s">',,
         'after_widget'  => '</div><hr />',
         'before_title'  => '<h5 class="widgettitle">',
         'after_title'   => '</h5>'
         );
      register_sidebars( $args );
   }

ウィジェットの例:

class MY_Widget extends WP_Widget {
    function my_widget( $args, $instance ) {
         $widget_ops = array(
         'description' => 'My Widget Description'
         );
        parent::WP_Widget(false, 'My Widget Name', $widget_ops );
    }
    function widget() { // This controls the display of the widget
    $title = 'My Widget Title';

    echo $before_widget;  // Outputs the the 'before_widget' register_sidebars setting
    echo $title;         //Will be wrapped in the 'before_title' and 'after_title' settings
    echo '<p>This is my widget output</p>';
    echo $after_widget;  //Outputs the 'after_widget' settings
    }
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
    register_widget( 'my_widget' );
}
10
Chris_O

それはfunctions.phpにあります

関数twentyeleven_widgets_init(){

register_widget( 'Twenty_Eleven_Ephemera_Widget' );

register_sidebar( array(
    'name' => __( 'Main Sidebar', 'twentyeleven' ),
    'id' => 'sidebar-1',
    'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    'after_widget' => "</aside>",
    'before_title' => '<h3 class="widget-title">',
    'after_title' => '</h3>',
) );
0
wassem