изменение wp-admin / widgets.php

11

Мы хотим оформить страницу виджетов в панели администратора немного по-другому, главным образом, чтобы помочь администратору сайта понять, где каждый виджет появится на сайте:

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

Для этого нам нужно изменить HTML-код, который отображает widgets.php (простого изменения CSS недостаточно). Как бы мы поступили так, не касаясь ядра?

Леа Коэн
источник
Куда будет помещаться панель для перетаскивания виджетов с помощью вышеуказанного подхода?
sanchothefat
@sanchothefat под
Леа Коэн
Почему бы не пойти дальше и представить исправление ядру. Похоже на стоящее улучшение ... Затем при регистрации боковой панели добавляется параметр, указывающий местоположение. Если ничего не указано, предполагается, что он структурирован так, как сейчас (справа)
Тейлор Дьюи

Ответы:

7

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

helenhousandi
источник
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.

Norcross
источник