私は私のテーマの一部としてインストールされているいくつかのカスタムウィジェットを持っています。ウィジェットがどのサイドバーに挿入されているかに応じて、各ウィジェットの管理パネル内で条件付きコードを実行したい(パブリックサイドではなく、関数フォーム内の管理パネル($ intance)に興味があります)。
ウィジェットの関数フォーム($ instance)ハンドラ内から、ウィジェットを保持している現在のサイドバーIDへの参照を取得する方法を教えてください。
ウィジェットがウィジェットAPIを使用している場合は、ウィジェットクラスに次のメソッドが必要です。
function widget($args, $instance){
//output html here...
}
$args['id']
は現在のサイドバーのIDを保持します。
サイドバーに名前がある場合は、get_sidebar( $name )
を使用してサイドバーの名前を取得できます。
ウィジェット自体の内部では、これを試してください:
global $wp_registered_widgets, $wp_registered_sidebars;
$sidebars_widgets = get_option('sidebars_widgets');
if($sidebars_widgets["sidebar-1"]) echo 'hooray';
WP 3.2の時点では、これを実行する簡単な方法はありません。一般に、ウィジェット管理画面はそれほど拡張性がありません。
2つのウィジェットクラスを作成し、それぞれに配置する場所をユーザーに指示するだけで済みます。