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?


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:



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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.