Se você atualizar seu WordPress para 3.3.1, o que você absolutamente deveria, cada área de widget no admin agora tem um ID que você pode usar para direcionar via CSS, o que realmente deveria ser suficiente. Veja enlace para um exemplo.
Queremos criar a página de widgets no painel de administração um pouco diferente, principalmente para ajudar o administrador do site a entender onde cada widget aparecerá no site:
Para isso, precisamos mudar o HTML que o widgets.php renderiza (simplesmente mudar o css não é suficiente). Como poderíamos fazer isso sem tocar no núcleo?
Se você atualizar seu WordPress para 3.3.1, o que você absolutamente deveria, cada área de widget no admin agora tem um ID que você pode usar para direcionar via CSS, o que realmente deveria ser suficiente. Veja enlace para um exemplo.
Não consigo tirar a dúvida da minha cabeça, mas não tenho tempo para uma solução completa. Então eu só escrevo minha ideia aqui, então eu vou dar uma pequena recompensa.
Há uma ação 'widgets_admin_page'
em wp-admin/widgets.php
acima do outro conteúdo. Você pode colocar uma caixa de visualização aqui.
Exemplo de código:
add_action( 'widgets_admin_page', 'show_widget_preview' );
function show_widget_preview()
{
$preview_widgets = $GLOBALS['wp_registered_sidebars'];
unset ( $preview_widgets['wp_inactive_widgets'] );
print '<div style="border:2px solid #ddf;padding:20px">'
. '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
. '</div>';
}
Isto imprime uma matriz de todas as barras laterais registradas. Você tem que percorrer todas as barras laterais para encontrar os widgets registrados.
Para tornar a visualização útil, você precisa de dois arquivos: um modelo HTML e uma folha de estilos.
Eu usaria add_theme_support()
.
Exemplo de código para o tema functions.php
:
add_theme_support(
'widget_preview',
array (
'template' => get_stylesheet_directory() . '/widget-preview.php',
'stylesheet' => get_stylesheet_directory() . '/widget-preview.css'
)
);
Em show_widget_preview()
, você enfileira a folha de estilo e carrega o modelo. Renderize as barras laterais registradas nos espaços reservados predefinidos em widget-preview.php
.
Atualize o modelo por AJAX depois que o usuário pressionou o botão Salvar em um widget.
Desafios: leve em conta o modo de acessibilidade, pequenas janelas e conflitos de CSS. Mostra uma mensagem útil quando nenhuma barra lateral está registrada (descrições da barra lateral?). O que deve acontecer quando um usuário tenta arrastar um widget para a caixa de visualização? :)
a resposta curta é que você não pode, não sem tocar no núcleo.
No entanto, você pode definir a descrição de cada área de widget (o texto abaixo do título da área do widget) na função register_sidebar.