web-dev-qa-db-ja.com

現在のウィジェットの親コンテナを決定する方法(サイドバーウィジェットID)

私は私のテーマの一部としてインストールされているいくつかのカスタムウィジェットを持っています。ウィジェットがどのサイドバーに挿入されているかに応じて、各ウィジェットの管理パネル内で条件付きコードを実行したい(パブリックサイドではなく、関数フォーム内の管理パネル($ intance)に興味があります)。

ウィジェットの関数フォーム($ instance)ハンドラ内から、ウィジェットを保持している現在のサイドバーIDへの参照を取得する方法を教えてください。

3
N2Mystic

ウィジェットがウィジェットAPIを使用している場合は、ウィジェットクラスに次のメソッドが必要です。

function widget($args, $instance){
    //output html here...
}

$args['id']は現在のサイドバーのIDを保持します。

3
Chris Carson

サイドバーに名前がある場合は、get_sidebar( $name )を使用してサイドバーの名前を取得できます。

ウィジェット自体の内部では、これを試してください:

global $wp_registered_widgets, $wp_registered_sidebars;
$sidebars_widgets = get_option('sidebars_widgets');
if($sidebars_widgets["sidebar-1"]) echo 'hooray';
2
Sean Lee

WP 3.2の時点では、これを実行する簡単な方法はありません。一般に、ウィジェット管理画面はそれほど拡張性がありません。

2つのウィジェットクラスを作成し、それぞれに配置する場所をユーザーに指示するだけで済みます。

1
scribu