изменение 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.