mudando o wp-admin / widgets.php

11

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?

    
por Lea Cohen 12.02.2012 / 11:38

3 respostas

7

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.

    
por helenhousandi 12.02.2012 / 17:20
4

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? :)

por fuxia 05.03.2012 / 00:47
0

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.

    
por Norcross 12.02.2012 / 13:15