Как добавить пользовательский виджет "Текст" в меню Внешний вид из functions.php?

19 янв. 2011 г., 19:38:15
Просмотры: 2.31K
Голосов: 1

Я пытаюсь добавить копию стандартного текстового виджета WP, но с моим собственным параметром CSS-класса, в functions.php, чтобы он отображался в менеджере виджетов и мог быть добавлен в сайдбар.

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

Можно ли сделать это проще?

В functions.php у меня следующее...

$google_search = TEMPLATEPATH . "/google_search.php";
require_once($google_search);
add_action('widgets_init', create_function('', "register_widget('My_Widget_Search');"));

В google_search.php у меня... (Все работает, кроме сохранения содержимого текстового поля)

<?php

class My_Widget_Search extends WP_Widget {

    function My_Widget_Search() {
        $widget_ops = array( 'classname' => 'widget_search', 'description' => __( "Виджет поиска Google Adsense" ) );
        $this->WP_Widget('adsense_search', __('Виджет поиска Adsense'), $widget_ops);
    }

    function widget( $args, $instance ) {
        extract( $args );
        $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( '' ) : $instance['title']);
        $text = apply_filters('widget_text', empty( $instance['text'] ) ? __( '' ) : $instance['text']);

        }

    function update( $new_instance, $old_instance ) {
        $instance = $old_instance;
        $instance['title'] = strip_tags($new_instance['title']);
        $instance['text'] = $new_instance['text'];

        return $instance;
    }

    function form( $instance ) {
        //Значения по умолчанию
        $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
        $title = esc_attr( $instance['title'] );
        $text = $instance['text'];
?>
        <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Заголовок:' ); ?></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 $title; ?>" /></p>
        <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name=""<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
<?php
    }

}
0
Все ответы на вопрос 1
0

Одна из идей заключается в том, чтобы зайти в файл виджетов из основных файлов WordPress, СКОПИРОВАТЬ код текстового виджета в ваш файл functions.php и отредактировать свою версию по своему усмотрению. Просто идея, надеюсь, это поможет решить некоторые проблемы.

20 янв. 2011 г. 01:50:09