cambiando wp-admin / widgets.php

11

Queremos diseñar la página de widgets en el panel de administración de manera un poco diferente, principalmente para ayudar al administrador del sitio a comprender dónde aparecerá cada widget en el sitio:

Para eso, necesitamos cambiar el HTML que representa widgets.php (simplemente cambiando el css no es suficiente). ¿Cómo podríamos hacerlo sin tocar el núcleo?

    
pregunta Lea Cohen 12.02.2012 - 11:38

3 respuestas

7

Si actualiza WordPress a 3.3.1, lo que debería hacer, cada área de widgets en el administrador ahora tiene una identificación que puede usar para apuntar a través de CSS, lo que realmente debería ser suficiente. Consulte enlace para ver un ejemplo.

    
respondido por el helenhousandi 12.02.2012 - 17:20
4

No puedo quitarme la pregunta de la cabeza, pero no tengo tiempo para una solución completa. Así que simplemente escribo mi idea aquí, luego estableceré una pequeña recompensa.

  • Hay una acción 'widgets_admin_page' en wp-admin/widgets.php sobre el otro contenido. Puede colocar un cuadro de vista previa aquí.
    Código de muestra:

    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>';
    }
    

    Esto imprime una matriz de todas las barras laterales registradas. Tienes que recorrer todas las barras laterales para encontrar los widgets registrados.

  • Para que la vista previa sea útil, necesita dos archivos: una plantilla HTML y una hoja de estilo.
    Yo usaría add_theme_support() .
    Código de muestra para el tema functions.php :

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
    
  • En show_widget_preview() usted pone en cola la hoja de estilo y carga la plantilla. Renderice las barras laterales registradas en los marcadores de posición predefinidos en widget-preview.php .

  • Actualice la plantilla según AJAX después de que el usuario presionó el botón Guardar en un widget.

  • Desafíos: tome en cuenta el modo de accesibilidad, las ventanas pequeñas y los conflictos de CSS. Mostrar un mensaje útil cuando no hay barra lateral registrada (¿descripciones de la barra lateral?). ¿Qué debería suceder cuando un usuario intenta arrastrar un widget al cuadro de vista previa? :)

respondido por el fuxia 05.03.2012 - 00:47
0

la respuesta corta es que no puedes, no sin tocar el núcleo.

sin embargo, puede establecer la descripción de cada área del widget (el texto debajo del título del área del widget) en la función register_sidebar.

    
respondido por el Norcross 12.02.2012 - 13:15

Lea otras preguntas en las etiquetas