zmiana wp-admin / widgets.php

11

Chcemy zaprojektować stronę widżetów w panelu administracyjnym nieco inaczej, głównie po to, aby pomóc administratorowi witryny zrozumieć, gdzie każdy widżet pojawi się w witrynie:

wprowadź opis zdjęcia tutaj

W tym celu musimy zmienić kod HTML renderowany przez widgets.php (sama zmiana css nie wystarczy). Jak moglibyśmy to zrobić bez dotykania rdzenia?

Lea Cohen
źródło
Gdzie panel do przeciągania widżetów zostałby umieszczony przy powyższym podejściu?
sanchothefat
@sanchothefat under
Lea Cohen
Dlaczego nie śmiało i przesłać łatkę do rdzenia. Wydaje się, że warto to ulepszyć ... Następnie, rejestrując pasek boczny, dodatkowym parametrem byłoby określenie lokalizacji. Jeśli nie określono, zakłada się, że ma taką strukturę, jak teraz (po prawej)
Taylor Dewey

Odpowiedzi:

7

Jeśli uaktualnisz WordPress do 3.3.1, co absolutnie powinieneś, każdy obszar widżetu w adminie ma teraz identyfikator, którego możesz użyć do kierowania za pomocą CSS, co naprawdę powinno wystarczyć. Zobacz http://core.trac.wordpress.org/ticket/18334 dla przykładu.

helenhousandi
źródło
4

Nie mogę wyrzucić tego pytania z głowy, ale nie mam czasu na pełne rozwiązanie. Zapiszę więc tutaj swój pomysł, a potem ustalę małą nagrodę.

  • Jest to działanie 'widgets_admin_page'w wp-admin/widgets.phpponad innych treści. Tutaj możesz umieścić okno podglądu.
    Przykładowy kod:

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

    Spowoduje to wydrukowanie tablicy wszystkich zarejestrowanych pasków bocznych. Musisz przejść przez wszystkie paski boczne, aby znaleźć zarejestrowane widżety.

  • Aby podgląd był użyteczny, potrzebujesz dwóch plików: szablonu HTML i arkusza stylów.
    Chciałbym użyć add_theme_support().
    Przykładowy kod motywu functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • W show_widget_preview()kolejkujesz arkusz stylów i ładujesz szablon. Renderuj zarejestrowane paski boczne w predefiniowanych symbolach zastępczych w widget-preview.php.

  • Zaktualizuj szablon dla AJAX po naciśnięciu przez użytkownika przycisku Zapisz w widżecie.

  • Wyzwania: Weź pod uwagę tryb dostępności, małe okna i konflikty CSS. Wyświetlaj przydatny komunikat, gdy nie zarejestrowano paska bocznego (opisy paska bocznego?). Co powinno się stać, gdy użytkownik spróbuje przeciągnąć widżet do pola podglądu? :)

fuxia
źródło
dzięki za zastanowienie się, @toscho! Obecnie pracuję nad innymi projektami, ale będę musiał wrócić do tego, a ja sprawdzę twoje rozwiązanie i dam ci znać. Dzięki jeszcze raz!
Lea Cohen,
0

krótka odpowiedź brzmi: nie możesz, nie dotykając rdzenia.

można jednak ustawić opis każdego obszaru widżetu (tekst pod tytułem obszaru widżetu) w funkcji register_sidebar.

Norcross
źródło