注册小部件的多个副本

时间:2013-01-16 作者:V Neal

我希望能够在下面的代码中注册快速搜索小部件的多个副本,这样我就可以拥有多个侧栏。代码取自我下载的插件

function quickSearchwidgetform()

{

  include(WP_DSP_ABSPATH . \'wp_search_wiget_form.php\');

}



function widget_dspquicksearch($args) {

  extract($args);

  echo $before_widget;

  echo $before_title;?>
Quick Search<?php echo $after_title;

  quickSearchwidgetform();

  echo $after_widget;

}

function dspquicksearch_init()

{

wp_register_sidebar_widget(

    \'dsp_quick_search_widget\',        // your unique widget id

    \'Quick Search Widget\',          // widget name

    \'widget_dspquicksearch\',  // callback function

    array(                  // options

        \'description\' => \'A Quick Search widget that displays dsp dating quick Search form.\'

    )

);  

}

add_action("plugins_loaded", "dspquicksearch_init");
现在,我在codex中读到,注册小部件的新更新方法应该由register\\u widget()完成-然而,当我更新下面的代码以使用它时,我的管理屏幕中的小部件页面将完全变为白色。

诚然,我在这里可能有点力不从心,但我渴望学习如何解决这个问题。任何提示都将不胜感激。

非常感谢。

1 个回复
SO网友:s_ha_dum

你真的需要使用Widget API.

下面是一个小部件外壳,让您开始使用。

class WPSE_Widget_Shell extends WP_Widget {

  function __construct() {
    $opts = array(
      \'description\' => \'Brief description; shows on the backend\'
    );
    parent::WP_Widget(
      \'widget-id\',
      \'Widget Name\', // shows on the backend
      $opts
    );
  }

  function form($instance) {
    echo \'backend widget form (optional if you have not user configurable options)\';
  }

  function update($new_instance,$old_instance) {
    // Process backend form data
    // optional if you don\'t have a \'form\' method
  }

  function widget($args,$instance) {
    echo \'Front end widget display\';
  }

}
function register_my_widgets() {
  register_widget(\'WPSE_Widget_Shell\');
}
add_action(\'widgets_init\',\'register_my_widgets\');
你是extending 控件类位于wp-includes/widgets.php 因此,关注父类是很好的。您可以使用default widgets 作为模式。

结束