Включение виджетов по умолчанию при разработке собственной темы WordPress

17 сент. 2010 г., 19:38:45
Просмотры: 1.37K
Голосов: 3

При создании темы WordPress, если боковая панель не активна, могу ли я её включить? Также, если боковая панель активна, но не содержит виджетов, могу ли я добавить их автоматически?

Я разработчик тем и плагинов, но этому я ещё не научился.

0
Все ответы на вопрос 1
2

@Volomike,

Когда вы регистрируете сайдбар в functions вашей темы, он становится активным в админ-панели. Если в сайдбары не добавлены виджеты, WordPress добавит виджеты по умолчанию. Вы можете предотвратить добавление виджетов по умолчанию, отменив их регистрацию:

// Удаление виджетов по умолчанию в WordPress
    // Функция для WP 2.8 и выше, использует $widget_class
    if (function_exists('unregister_widget')) {
        unregister_widget('WP_Widget_Meta');
        unregister_widget('WP_Widget_Search');
        unregister_widget('');

    // Функция для версий до WP 2.8, использует $id
    } else {
        unregister_widget_control('meta');
        unregister_widget_control('search');
    }

Вы также можете предустановить свои собственные виджеты.

// Следующий пример кода взят из темы Thematic, которая распространяется под лицензией GPLv2

    register_sidebar_widget(__('Поиск', 'thematic'), 'widget_thematic_search', null, 'search');
    unregister_widget_control('search');
    register_sidebar_widget(__('Мета', 'thematic'), 'widget_thematic_meta', null, 'meta');
    unregister_widget_control('meta');
    register_sidebar_widget(array(__('RSS-ссылки', 'thematic'), 'widgets'), 'widget_thematic_rsslinks');
    register_widget_control(array(__('RSS-ссылки', 'thematic'), 'widgets'), 'widget_thematic_rsslinks_control', 300, 90);

    // Предустановленные виджеты
    $preset_widgets = array (
        'primary-aside'  => array( 'search', 'pages', 'categories', 'archives' ),
        'secondary-aside'  => array( 'links', 'rss-links', 'meta' )
        );

    if ( isset( $_GET['activated'] ) ) {
        update_option( 'sidebars_widgets', apply_filters('thematic_preset_widgets',$preset_widgets ));
    }

Thematic — отличный пример того, что можно сделать с виджетами. Посмотрите файлы widgets.php и widgets-extensions.php

18 сент. 2010 г. 02:53:51
Комментарии

Thematic может быть немного прямолинейным и полностью игнорировать множество встроенных функций WordPress. Возможно, это сделано для обратной совместимости, но в какой-то момент нужно перерезать пуповину. Вместо проверки $_GET['activated'] используйте встроенный API и хук switch_theme для тестирования установленных виджетов и внесения необходимых изменений.

Gipetto Gipetto
18 сент. 2010 г. 06:54:16

Окончательное решение можно найти здесь: http://wordpress.stackexchange.com/questions/16603/enabling-default-widgets-in-a-custom-theme

Volomike Volomike
7 мая 2011 г. 04:25:09