2012-06-08 2 views
0

Я пытаюсь создать виджет, похожий на текстовый виджет, но я не хочу, чтобы он был обернут, и я не хочу, чтобы вокруг него добавлялись div или форматирование. Это будет использоваться для javascript непосредственно перед закрывающим тегом, поэтому я просто пытаюсь получить информацию о простой/базовой информации, введенную в виджет. Что еще мне нужно, кроме того, что у меня есть? Я сделал это правильно?Создание незавершённого виджета

function 123_widgets_init() { 
    register_sidebar(array(
     'name' => __('Scripts', '123'), 
     'id' => 'sidebar-1', 
     'before_widget' => '', 
     'after_widget' => '', 
     'before_title' => '', 
     'after_title' => '', 
    )); 
} 
add_action('widgets_init', '123_widgets_init'); 
+0

Почему вы не используете 'wp_enque_script', чтобы добавить свой скрипт на страницу? – Nick

+0

они не являются предопределенными сценариями –

+0

Можете ли вы объяснить, что вы имеете в виду, они не предопределены? –

ответ

2

Да, вы сделали правильно. любой текстовый виджет может принимать javascript - если вы хотите избавиться от div и p-тегов и классов - вашего кода должно быть достаточно.

Вы также можете использовать некоторые фильтры для очистки других вещей.

На самом деле, у меня был код для такого виджета - я не помню, с какого сайта я его взял (некоторый репозиторий snippet), но в основном это текстовый виджет, дублированный небольшими изменениями.

<?php 
/* 
Plugin Name: Text widget for Javascript 
Plugin URI: Unknown 
Description: Adds a Text widget with Javascript support - basically empty all divs classes etc. 
Version: 3.1 
Author: Unknown (code source unknown. compiled by Obmerk99) 
Author URI: Unknown 
License: GPL2 
Network: true 
*/ 

/********************************************** 
* Text widget class with small twicks for JS * 
**********************************************/ 

class WP_Widget_Text_For_JS extends WP_Widget { 

    function __construct() { 
     $widget_ops = array('classname' => 'widget_text', 'description' => __('Javascript Text Widget')); 
     $control_ops = array('width' => 400, 'height' => 350); 
     parent::__construct('text', __('Text'), $widget_ops, $control_ops); 
    } 

    function widget($args, $instance) { 
     extract($args); 
     $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base); 
     $text = apply_filters('widget_text', $instance['text'], $instance); 
     $before_widget = ''; $after_widget =''; $before_title=''; $after_title='';$after_widget=''; //empty all 
     echo $before_widget; 
     if (!empty($title)) { echo $before_title . $title . $after_title; } ?> 
      <div class="textwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div> 
     <?php 
     echo $after_widget; 
    } 

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

    function form($instance) { 
     $instance = wp_parse_args((array) $instance, array('title' => '', 'text' => '')); 
     $title = strip_tags($instance['title']); 
     $text = esc_textarea($instance['text']); 
?> 
     <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> 

     <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> 

     <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p> 
<?php 
    } 
} 
function wp_o99_javascript_text_widget(){ 
    // unregister_widget('WP_Widget_Text'); // Only if you really want to . 
    register_widget('WP_Widget_Text_For_JS'); 
} 
add_action('widgets_init', 'wp_o99_javascript_text_widget', 1); 
?> 
0

Есть много шагов влево, чтобы попасть туда, куда вы хотите

  1. Создать новый файл врезка-xxx.php, который вызывает боковую панель, созданную
  2. Создать widget заскочить в эта боковая панель.
  3. Звоните get_sidebar('xxx');, где вы хотите, чтобы он отображал виджетов на боковой панели.

При создании файла на боковой панели или виджет, который Вы можете исключить добавление форматирования или обертки и просто повторяют входные данные из виджета

http://codex.wordpress.org/Widgets_API

1

Используйте свой плагин Magic Widgets. Он имеет текстовый виджет, который не использует параметры боковой панели, и создает специальные области виджетов в верхнем и нижнем колонтитулах интерфейсных и фоновых представлений.

Вы можете взять plain widget from GitHub.

Смежные вопросы