2012-06-27 60 views
2

我在写wordpress插件。该插件将根据API调用的响应创建小部件。我的API返回一些第三方站点链接的数组。所以根据数组的数量,我必须创建小部件。说,响应有10个条目,我必须根据响应创建10个小部件。目前,我正在根据回复创建10个课程。但我需要遍历数组并动态创建10个小部件。有没有其他办法可以完成这项任务?请帮忙。widget在wordpress插件中创建dynamiclly

class widget_Mywidget extends WP_Widget { 

    function widget_Mywidget() { 
    $widget_ops = array('classname' => 'widget_Mywidget', 'description' => __("My Widget")); 
     $this->WP_Widget('My Widget', __('This is sample Widget'), $widget_ops);  

    } 

    function widget($args, $instance) { 
     extract($args); 

     echo $before_widget; 
     echo $before_title; 

     if(!empty($instance['title'])) { 
      echo $instance['title']; 
     } else { 
      echo "Sample"; 
     } 

     echo $after_title; 

     echo '<script src="www.google.com"></script>'; 
     echo $after_widget; 
    } 

    function update($new_instance, $old_instance) { 
     return $new_instance; 
    } 

    function form($instance) { 
     //error_check(); 
     $title = (isset($instance['title'])) ? $instance['title'] : ''; 

     echo '<div id="myadmin-panel">'; 

     echo '<label for="' . $this->get_field_id("title") .'">Widget Title:</label>'; 
     echo '<input type="text" '; 
     echo 'name="' . $this->get_field_name("title") . '" '; 
     echo 'id="' . $this->get_field_id("title") . '" '; 
     echo 'value="' . $title . '" /><br /><br />'; 
     echo '</div>'; 

    } 
} 

回答

1

你可以使用旧的widget界面注册您的窗口小部件,但由于它2.8弃用,所以他们可能在任何时候将其删除(加上它会输出WP_DEBUG模式的警告)。

我所知道的是使用eval()扩展一个基类为一体这一模一样的最简单的方法(注意不要用虽然私有方法):

class widget_Mywidget_base extends WP_Widget { 
    //Your stuff here 
} 

for ($i=1;$i<=10;$i++) { 
    $widget_class = 'widget_Mywidget_'.$i; 
    eval("class $widget_class extends widget_Mywidget_Base { };"); 
    register_widget($widget_class); 
}