wp_register_widget_control()
Регистрирует функцию отвечающую за вывод настроек виджета в админ-панели. Сохранение опций виджета происходит в этой же функции.
При регистрации виджета с помощью этой функции, виджет можно будет использоваться только 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_controlsThe registered widget controls. - Global. Массив.
$wp_registered_widget_updatesThe registered widget updates. - Global. Массив.
$wp_registered_widgetsThe 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. |