我正在写wordpress插件。该插件将根据API调用的响应创建小部件。我的API返回一些第三方站点链接。所以基于数组的数量,我必须创建小部件。比如说,响应有10个条目我必须根据响应创建10个小部件。目前我正在根据响应创建10个类。但我需要遍历数组并动态创建10个小部件。还有其他方法可以完成这项任务吗?请帮忙。
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>';
}
}
答案 0 :(得分:1)
您可以使用旧的小部件界面来注册您的小部件,但它自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 );
}