2012-06-08 34 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標籤和類 - 你的代碼應該足夠了。

你也可以使用一些過濾器來清理其他東西。

其實,我有一個代碼,這樣的小部件 - 我不記得從哪個網站我把它(一些片段庫),但它基本上是文本組件與一些小的修改重複。

<?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. 創建調用您的側邊欄創建
  2. 創建widget下降到一個新的側邊欄xxx.php文件那邊欄。
  3. 致電get_sidebar('xxx');您希望它顯示側邊欄中的小部件的位置。

在創建工具條文件,也可以排除添加格式或包裝和小部件正好呼應了輸入從部件

http://codex.wordpress.org/Widgets_API

1

使用我的插件Magic Widgets。它有一個不使用側邊欄參數的文本小部件,它在前端和後端視圖的頁眉和頁腳中創建特殊的小部件區域。您可以參考plain widget from GitHub

相關問題