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

6 мая 2011 г., 18:57:56
Просмотры: 2.88K
Голосов: 1

При разработке пользовательской темы, как включить стандартные встроенные виджеты? Речь именно о стандартных виджетах, а не о пользовательских. Я попробовал следующий пример для блога на WP 3.12, поместив этот код в файл functions.php своей темы, пытаясь активировать виджет "Страницы" по умолчанию. Это не сработало, но я не понимаю почему.

function mytheme_widget_init(){
  $asOps = array(
    'classname' => 'widget_pages',
    'description' => __( "")
  );
  wp_register_sidebar_widget('pages', __('Pages'), 'wp_widget_pages', $asOps);
}

add_action('widgets_init','mytheme_widget_init');

Что я делаю не так?

РЕДАКТИРОВАНИЕ: РЕШЕНИЕ

В моей теме потребовалось отредактировать sidebar.php и использовать следующую разметку:

<?php ?>
<div id="sidebar" role="complementary">
    <ul>

<?php if ( !dynamic_sidebar(1) ) : ?>
<?php endif; ?>

<?php if ( !is_active_sidebar(1) ) : ?>

    <li id="search" class="widget-container widget_search">
        <?php get_search_form(); ?>
    </li>

    <li id="categories" class="widet-container widget_categories">
        <?php wp_list_categories('show_option_none=&title_li=<h2>' . __('Categories') . '</h2>' ); ?>
    </li>

    <li id="archives" class="widget-container widget_archives">
        <h2 class="widget-title">Архивы</h2>
        <ul>
            <?php wp_get_archives( 'type=monthly' ); ?>
        </ul>
    </li>

    <li id="pages" class="widget-container widget_pages">
        <ul>
            <?php wp_list_pages('title_li=<h2>' . __('Страницы') . '</h2>'); ?>
        </ul>
    </li>

<?php endif; ?>

    </ul>
</div><!-- sidebar -->
0
Все ответы на вопрос 1
1

это не тот способ, функция wp_register_sidebar_widget используется для создания виджетов. если вы хотите, чтобы в боковой панели по умолчанию отображались виджеты, используйте [dynamic_sidebar()][1] в вашей теме, например, как в теме 2010:

<div id="primary" class="widget-area" role="complementary">
            <ul class="xoxo">

<?php
    /* Когда мы вызываем функцию dynamic_sidebar(), она выводит
     * виджеты для данной области виджетов. Если вместо этого возвращается false,
     * значит боковая панель просто не существует, поэтому мы вручную добавим
     * содержимое по умолчанию на случай отсутствия виджетов.
     */
    if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>

            <li id="search" class="widget-container widget_search">
                <?php get_search_form(); ?>
            </li>

            <li id="archives" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Архивы', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_get_archives( 'type=monthly' ); ?>
                </ul>
            </li>

            <li id="meta" class="widget-container">
                <h3 class="widget-title"><?php _e( 'Мета', 'twentyten' ); ?></h3>
                <ul>
                    <?php wp_register(); ?>
                    <li><?php wp_loginout(); ?></li>
                    <?php wp_meta(); ?>
                </ul>
            </li>

        <?php endif; // конец области виджетов primary ?>
            </ul>
        </div><!-- #primary .widget-area -->
6 мая 2011 г. 19:18:54
Комментарии

Вы были абсолютно правы. Я собираюсь дополнить свой вопрос решением, к которому я в итоге пришел, но хочу отдать должное вам за это решение.

Volomike Volomike
6 мая 2011 г. 20:14:38