зміна 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.