私は複数の「サイドバー」を持っていますが、それらすべてが同じサイズであるとは限りません。すべてのウィジェットがすべてのサイドバーに収まるとは限りません(たとえば、クライアントがカスタムウィジェットを配置できる「フッターサイドバー」がありますが、幅が広く、「本物の」サイドバーに収まりません)。ウィジェットが属していないサイドバーにウィジェットが配置されたときに表示したい(たとえば、ヘッダーのテキストの色を変更する)。これを行うための最良の方法は何でしょうか。
私は への私のトリックと同じようなCSSを使ってそれを解決しました 私自身のウィジェットをハイライトします - /。サイドバーのドロップ領域はクラスwidgets-sortable
を持つdiv
であり、サイドバーのid
を持ちます。あなたのウィジェットは、クラスdiv
を持つwidget
、そしてフォームwidget-[global_counter]_[widget_key]-[widget_id]
のid
です。これらを組み合わせて正しいまたは間違った組み合わせを強調表示することができます。
たとえば、幅の広いウィジェットのみを含めることができるfooter
というサイドバーがあります。これらのウィジェットは、IDに-wide-
が含まれているため認識できます。私はこれらを緑色にし、他のものはすべてストライキを入れて赤色にします。
add_action('admin_print_styles-widgets.php', 'print_widget_hint_style');
function print_widget_hint_style()
{
echo <<<EOF
<style type="text/css">
/* Less specific rule for all widgets */
div.widgets-sortables[id*=-footer] div.widget .widget-title
{
color: red;
text-decoration: line-through;
}
/* More specific rule for correct widgets */
div.widgets-sortables[id*=-footer] div.widget[id*=-wide-] .widget-title
{
color: green;
}
</style>
EOF;
}
Widget_display_callbackフックがあります。これを使用すると、サイドバーとウィジェットに基づいてウィジェットをオーバーライドできます(不適切な場合はfalseを返します)。
http://core.trac.wordpress.org/browser/trunk/wp-includes/widgets.php?rev=15590#L180
私はおそらく自分自身のウィジェット領域を定義してそれを管理領域に入れるウィジェットを作り、そのウィジェット領域をテーマ内の特定の場所に置くようにします。