cambiando wp-admin / widgets.php


11

Vogliamo progettare la pagina dei widget nel pannello di amministrazione in modo leggermente diverso, principalmente al fine di aiutare l'amministratore del sito a capire dove ciascun widget apparirà nel sito:

inserisci qui la descrizione dell'immagine

Per questo, dobbiamo cambiare il codice HTML che viene visualizzato da widgets.php (semplicemente cambiare il CSS non è sufficiente). Come potremmo farlo senza toccare il nucleo?


Dove sarebbe posizionato il pannello per trascinare i widget con l'approccio sopra?
sanchothefat

@sanchothefat under
Lea Cohen

Perché non andare avanti e inviare una patch al core. Sembra un miglioramento utile ... Quindi, quando si registra una barra laterale, un parametro aggiunto sarebbe quello di specificare una posizione. Se nessuno specificato, presuppone che sia strutturato come è ora (a destra)
Taylor Dewey

Risposte:



4

Non riesco a togliermi dalla testa la domanda, ma non ho tempo per una soluzione completa. Quindi scrivo qui la mia idea, quindi mi faccio una piccola ricompensa.

  • C'è un'azione 'widgets_admin_page'nel wp-admin/widgets.phpsopra gli altri contenuti. È possibile posizionare qui una finestra di anteprima.
    Codice di esempio:

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

    Questo stampa una matrice di tutte le barre laterali registrate. Devi scorrere tutte le barre laterali per trovare i widget registrati.

  • Per rendere utile l'anteprima sono necessari due file: un modello HTML e un foglio di stile.
    Vorrei usare add_theme_support().
    Codice di esempio per il tema functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • In show_widget_preview()accoda il foglio di stile e carica il modello. Rendering delle barre laterali registrate nei segnaposto predefiniti in widget-preview.php.

  • Aggiorna il modello per AJAX dopo che l'utente ha premuto il pulsante Salva in un widget.

  • Sfide: tenere conto della modalità di accessibilità, piccole finestre e conflitti CSS. Mostra un messaggio utile quando non è registrata alcuna barra laterale (descrizioni della barra laterale?). Cosa dovrebbe accadere quando un utente tenta di trascinare un widget nella finestra di anteprima? :)


grazie per averci pensato, @toscho! Attualmente sto lavorando ad altri progetti, ma dovrò tornare a questo, e controllerò la tua soluzione e ti farò sapere. Grazie ancora!
Lea Cohen,

0

la risposta breve è che non puoi, non senza toccare il nucleo.

tuttavia, è possibile impostare la descrizione di ciascuna area del widget (il testo sotto il titolo dell'area del widget) nella funzione register_sidebar.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.