зміна wp-admin / widgets.php


11

Ми хочемо розробити сторінку віджетів на панелі адміністратора дещо інакше, головним чином для того, щоб допомогти адміністратору сайту зрозуміти, де кожен віджет з’явиться на сайті:

введіть тут опис зображення

Для цього нам потрібно змінити HTML, який надає widgets.php (просто змінити css недостатньо). Як би ми зробили це, не торкнувшись серцевини?


Де б розмістити панель для перетягування віджетів з вищевказаним підходом?
sanchothefat

@sanchothefat внизу
Леа Коен

Чому б не піти наперед і не надіслати патч до ядра. Здається, варто покращитись ... Тоді, реєструючи бічну панель, додається параметр, щоб вказати місцеположення. Якщо нічого не вказано, він передбачає, що він структурований так, як зараз (праворуч)
Тейлор Дьюї

Відповіді:


7

Якщо ви оновите WordPress до 3.3.1, що вам абсолютно слід, у кожній області віджетів адміністратора тепер є ідентифікатор, який ви можете використовувати для націлювання за допомогою CSS, якого дійсно має бути достатньо. Для прикладу див. Http://core.trac.wordpress.org/ticket/18334 .


4

Я не можу отримати питання з голови, але не маю часу на повне рішення. Тому я просто записую тут свою ідею, тоді я встановлю невелику суму.

  • Існує дію 'widgets_admin_page'в wp-admin/widgets.phpвище іншого контенту. Ви можете розмістити тут вікно попереднього перегляду.
    Приклад коду:

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

    Це видає масив усіх зареєстрованих бічних панелей. Ви повинні пройти всі бічні панелі, щоб знайти зареєстровані віджети.

  • Щоб зробити попередній перегляд корисним, вам потрібні два файли: HTML-шаблон та таблиця стилів.
    Я б користувався add_theme_support().
    Приклад коду для теми functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
    
  • У show_widget_preview()вас описується таблиця стилів і завантажується шаблон. Надайте зареєстровані бічні панелі у заздалегідь визначених заповнювачах у widget-preview.php.

  • Оновіть шаблон на AJAX після того, як користувач натиснув кнопку " Зберегти" у віджеті.

  • Проблеми: врахуйте режим доступності, малі вікна та конфлікти CSS. Показати корисне повідомлення, коли жодна бічна панель не зареєстрована (описи бічної панелі?). Що має статися, коли користувач намагається перетягнути віджет у поле попереднього перегляду? :)


дякую, що подумав про це, @toscho! Зараз я працюю над іншими проектами, але мені доведеться повернутися до цього, і я перевірю ваше рішення та повідомляю вас. Знову дякую!
Леа Коен

0

коротка відповідь - ви не можете, не торкнувшись ядра.

проте ви можете встановити опис кожної області віджетів (текст під заголовком області віджетів) у функції register_sidebar.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.