cambiando wp-admin / widgets.php

11

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

ingrese la descripción de la imagen aquí

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

Lea Cohen
fuente
¿Dónde se colocaría el panel para arrastrar widgets con el enfoque anterior?
sanchothefat
@sanchothefat debajo
Lea Cohen
¿Por qué no seguir adelante y enviar un parche al núcleo? Parece una mejora que vale la pena ... Luego, al registrar una barra lateral, un parámetro adicional sería especificar una ubicación. Si no se especifica ninguno, se supone que está estructurado como está ahora (a la derecha)
Taylor Dewey

Respuestas:

7

Si actualiza su WordPress a 3.3.1, lo cual debería absolutamente, cada área de widgets en el administrador ahora tiene una ID que puede usar para apuntar a través de CSS, que realmente debería ser suficiente. Consulte http://core.trac.wordpress.org/ticket/18334 para ver un ejemplo.

helenhousandi
fuente
4

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

  • Hay una acción 'widgets_admin_page'por wp-admin/widgets.phpencima del 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.
    Me gustaría utilizar 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 la show_widget_preview()cola de la hoja de estilo y cargar la plantilla. Renderice las barras laterales registradas en los marcadores de posición predefinidos en widget-preview.php.

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

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

fuxia
fuente
gracias por pensarlo, @toscho! Actualmente estoy trabajando en otros proyectos, pero tendré que volver a este, y comprobaré tu solución y te lo haré saber. ¡Gracias de nuevo!
Lea Cohen
0

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

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

Norcross
fuente