Добрый день.
Нужно создать свой виджет.
Код скопировал с wp-kama.ru
// Класс виджета
class MenuWidget extends WP_Widget {
function __construct() {
// Запускаем родительский класс
parent::__construct(
'', // ID виджета, если не указать (оставить ''), то ID будет равен названию класса в нижнем регистре: my_widget
'Menu Widget',
array('description' => 'Menu')
);
// стили скрипты виджета, только если он активен
if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
add_action('wp_enqueue_scripts', array( $this, 'add_my_widget_scripts' ));
add_action('wp_head', array( $this, 'add_my_widget_style' ) );
}
}
// Вывод виджета
function widget( $args, $instance ) {
// var_dump($args);
// var_dump($instance);
$title = apply_filters( 'widget_title', $instance['title'] );
echo $args['before_widget'];
if ( ! empty( $title ) ) {
echo $args['before_title'] . $title . $args['after_title'];
}
echo __( 'Hello, World!', 'text_domain' );
echo $args['after_widget'];
}
// Сохранение настроек виджета (очистка)
function update( $new_instance, $old_instance ) {
}
// html форма настроек виджета в Админ-панели
function form( $instance ) {
var_dump($instance);
$title = @ $instance['title'] ?: 'Заголовок по умолчанию';
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
</p>
<?php
}
// скрипт виджета
function add_my_widget_scripts() {
// фильтр чтобы можно было отключить скрипты
if( ! apply_filters( 'show_my_widget_script', true, $this->id_base ) )
return;
$theme_url = get_stylesheet_directory_uri();
wp_enqueue_script('my_widget_script', $theme_url .'/my_widget_script.js' );
}
// стили виджета
function add_my_widget_style() {
// фильтр чтобы можно было отключить стили
if( ! apply_filters( 'show_my_widget_style', true, $this->id_base ) )
return;
?>
<style>
.my_widget a{ display:inline; }
</style>
<?php
}
}
// Регистрация класса виджета
add_action( 'widgets_init', 'my_register_widgets' );
function my_register_widgets() {
register_widget( 'MenuWidget' );
}
Почему $instance в form равен null?
Я в админке пытаюсь менять заголовок, но он не меняется.
В чем причина?
Заранее благодарен.