2012-06-27 92 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); 
}