wp_register_widget_control()
Регистрирует функцию отвечающую за вывод настроек виджета в админ-панели. Сохранение опций виджета происходит в этой же функции.
При регистрации виджета с помощью wp_register_sidebar_widget(), виджет можно будет использоваться только 1 раз. Для регистрации рекурсивного виджета, используйте функцию register_widget().
Хуков нет.
Возвращает
null
. Ничего не возвращает.
Использование
wp_register_widget_control( $id, $name, $control_callback, $options, $params,... );
- $id(число/cтрока) (обязательный)
- ID виджета, уникальное название. Например,
your_widget_1
. Должен совпадать с $id функции wp_register_sidebar_widget( $id, ... ), которая регистрирует виджет. - $name(cтрока/cтрока) (обязательный)
- Отображаемое название виджета в сайдбаре. Указываем такое же как id (что-то я не нашел где оно выводится)... Название (заголовок) виджета в админ-панели указывается в параметре $name при регистрации wp_register_sidebar_widget( $id, $name, ... ).
- $control_callback(callback/cтрока) (обязательный)
- Название функции обратного вызова, которая будет отвечать за вывод содержимого виджета в сайдбаре.
- $options(массив)
- Содержит массив из следующих элементов:
height
,width
’ иid_base
.
'height' - не используется никогда.
'width' - это ширина развернутого виджета. Если указать например 500, то при разворачивании виджет будет вылазить за пределы общего контейнера.
'id_base' - определяется автоматически. Для того чтобы виджет можно было использовать несколько раз, можно указать этот параметр. Должен выглядеть так примерно так:{$id_base}-{$unique_number}
. Не понял как использовать.
По умолчанию: array() - $params,...(смешаный/cтрока) (обязательный)
- Дополнительные параметры которые нужно передать в виджет. Допустим тут мы укажем такие строки:
wp_register_widget_control( ..., $param1='foo', $param2='foo2' );
тогда в функции $control_callback будут переданы параметры:$param1='foo', $param2='foo2'
.
Примеры
#1 Регистрация настроек виджета
Нам нужно установить настройки для произвольного виджета. Функция отвечающая за вывод настроек виджета () регистрируется так:
<?php // регистрация настроек виджета wp_register_widget_control( 'my_widget', // id 'my_widget', // name 'my_widget_control', // название функции обратного вызова array('width'=>500), // ширина блока настроек $param1 = 'foo' // передаваемый в my_widget_control($param1) параметр ); // форма настроек виджета и сохранения опций function my_widget_control( $param1 = array() ) { // если данные отправлены сохраняем их в опции if( isset($_POST['submitted']) ) { update_option('my_widget_title', $_POST['widgettitle']); update_option('my_widget_twitterurl', $_POST['twitterurl']); update_option('my_widget_description', $_POST['description']); } // Загружаем опции $widgettitle = get_option('my_widget_title'); $twitterurl = get_option('my_widget_twitterurl'); $description = get_option('my_widget_description'); ?> Заголовок виджета:<br /> <input type="text" class="widefat" name="widgettitle" value="<?php echo stripslashes($widgettitle); ?>" /> <br /><br /> Описание:<br /> <textarea class="widefat" rows="5" name="description"><?php echo stripslashes($description); ?></textarea> <br /><br /> Профиль Twitter (URL):<br /> <input type="text" class="widefat" name="twitterurl" value="<?php echo stripslashes($twitterurl); ?>" /> <br /><br /> <input type="hidden" name="submitted" value="1" /> <?php }
Заметки
- Global. Массив. $wp_registered_widget_controls
- Global. Массив. $wp_registered_widget_updates
- Global. Массив. $wp_registered_widgets
- Global. Массив. $_wp_deprecated_widgets_callbacks
Список изменений
С версии 2.2.0 | Введена. |
С версии 5.3.0 | Formalized the existing and already documented ...$params parameter by adding it to the function signature. |