scottb
  • 0
Гуру

Мой плагин создает пользовательские виджеты. Как я могу программно добавить их в существующие области виджетов боковой панели?

  • 0

Хорошо, я могу создать код для добавления пользовательских виджетов в менеджер виджетов. Проверить.

Моя следующая задача состоит в том, чтобы в том же плагине во время активации проверить наличие моей темы и, если она активна, предварительно заполнить области виджетов пользовательскими виджетами, которые я только что создал.

Я надеюсь это имеет смысл. Если я смогу это сделать, это сэкономит массу времени на настройке (и объяснении, как настроить) мою настройку темы по умолчанию, которая в значительной степени зависит от пользовательских виджетов. Такие вещи, как форма подписки по электронной почте, настраиваемый виджет слайдера и т. д.

Спасибо заранее, если кто-нибудь может мне помочь здесь.

Вот боковые панели моей темы по умолчанию…

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Home Sidebar',
        'id' => 'home-sidebar-widget',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Home Header Area',
        'id' => 'home-header-widget',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Inside Header Area',
        'id' => 'inside-header-widget',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Home Footer Area',
        'id' => 'home-footer-widget',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Inside Footer Area',
        'id' => 'inside-footer-widget',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name' => 'Inside Sidebar',
        'id' => 'inside-sidebar-widget',
    ));
Share
  1. Скотт, основываясь на ответе и комментарии toscho, у вас есть пример рабочего кода?

    • 0
  2. Боковые панели прописаны в опции 'sidebars_widgets' . Чтобы увидеть, что есть, а что нет, попробуйте следующее:

    add_action( 'wp_footer', 'show_my_sidebars' );
    
    function show_my_sidebars()
    {
        $sw = get_option( 'sidebars_widgets' );
        print '<pre>' . htmlspecialchars( print_r( $sw, TRUE ) ) . '</pre>';
    }
    

    Пример вывода:

    Array 
    (
    [sidebar-footer-left] => Array 
    ( 
    [0] => archives-3 
    )
    [sidebar-footer-right] => Array 
    ( 
    [0] => recent-comments-3 
    )[array_version] => 3 
    )
    

    Поэтому отметьте опцию в каждом крючке активации и вставьте свои виджеты, если их там еще нет.

    И перестань употреблять if ( function_exists('register_sidebar') ) . Вы действительно хотите поддерживать четырехлетние версии WP?

    • 0

Оставить ответ

You must login to add an answer.