web-dev-qa-db-ja.com

After_title引数に固有のIDを使用してwordpressでウィジェットを設定する

Collapsible-widget-areaプラグインを取得して、折りたたみ領域内に作成されるすべてのウィジェットがそのタイトルの後に一意のID <div>を持つようにします。

function get_args() {
    $this->args = apply_filters( 'collapsible-widget-area-args', array(
        'name'          => __( 'Collapsible Widget Area', 'collapsible-widget-area' ),
        'id'            => 'collapsible-widget-area',
        'description'   => __( 'Drag widgets into this area in order to use them inside of the Collapsible Widget.', 'collapsible-widget-area' ),
        'before_widget' => '<div id="%1$s" class="widget %2$s collapsible-item">',
        'after_widget'  => '</div>',
        'before_title'  => '<h2 class="widgettitle">',
        'after_title'   => '</h2><div id="i_want_to_be_a_unique_id_for_every_widget_but_i_am_not"></div>',
    ) );
    $this->sidebar_id = $this->args['id'];
    if ( ! class_exists( 'collapsible_widget' ) ) {
        require_once( 'class.collapsible-widget.php' );
    }
    add_action( 'widgets_init', array( $this, 'register_widget' ) );
}

これは引数を設定する関数ですが、私が理解している限りでは、一度だけ呼び出され、引数はすべてのウィジェットに適用されます。 %1$sbefore_widgetのようなものを使用するように、あるいはafter_titleの中でまったく同じ値を使用するように今すぐ誰かに教えてもらえますか?

全体のプラグインは で見ることができますwordpressのプラグインsvn 、私が上で見ている機能は class.collapsible-widgetにあります-area.php とこれまでに追加した唯一のものは<div id="i_want_to_be_a_unique_id_for_every_widget_but_i_am_not"></div>です。

これは「私にプログラムを書いてください」という質問ではなく、私が挙げている例にすぎません。たぶん、これを達成するための完全な他の解決策が必要であるか、あるいは既にこのワードプレス・ウィジェット・クラスを拡張するこのプラグインを使ってするのが非常に簡単であるか、私は知りません。

1
amy

Tracの widget.phpを見るとsprintf()のみbefore_widgetで実行されます(884行目):

$params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);

したがって、それは他の引数のいずれにも機能しません。

私はあなたがdynamic_sidebar_paramsフィルタを使用できるかどうか疑問に思いましたが、$ idと$ classname_引数はフィルタに渡されません。コアをハッキングする以外に、Twitterのブートストラップを変更することや、ページをロードした後にIDを追加するためにjQueryを使用すること以外にできることがたくさんあるとは思いません。

2
mrwweb