2010-01-04 108 views
0

我想在WordPress插件中使用的窗口小部件,我看到小工具盒中這樣的錯誤:WordPress的插件

Warning: extract() [function.extract]: First argument should be an array in /nfs/c03/h04/mnt/57957/domains/rab.qbessi.com/html/wp-content/plugins/register-plus/dash_widget.php on line 24 

這是第24行的代碼:

// Output the widget contents 
    function widget($args) { 
     extract($args, EXTR_SKIP); 

這裏的dash_widget.php代碼

<?php 
if(!class_exists('RegisterPlusWidget')){ 
    class RegisterPlusWidget{ 
     function RegisterPlusWidget() { //contructor 
      // Add the widget to the dashboard 
      add_action('wp_dashboard_setup', array($this, 'register_widget')); 
      add_filter('wp_dashboard_widgets', array($this, 'add_widget'));  
     } 
     function register_widget() { 
      wp_register_sidebar_widget('regplus_invite_tracking', __('Invitation Code Tracking', 'regplus'), array($this, 'widget'), array('settings' => 'options-general.php?page=register-plus')); 
     } 
     // Modifies the array of dashboard widgets and adds this plugin's 
     function add_widget($widgets) { 
      global $wp_registered_widgets; 

      if (!isset($wp_registered_widgets['regplus_invite_tracking'])) return $widgets; 

      array_splice($widgets, 2, 0, 'regplus_invite_tracking'); 

      return $widgets; 
     } 
     // Output the widget contents 
     function widget($args) { 
      extract($args, EXTR_SKIP); 

      echo $before_widget; 

      echo $before_title; 
      echo $widget_name; 
      echo $after_title; 

      global $wpdb; 
      $regplus = get_option('register_plus'); 
      $codes = $regplus['codepass']; 
      $usercodes = array(); 
      foreach($codes as $code){ 
       $users = $wpdb->get_results("SELECT user_id FROM $wpdb->usermeta WHERE meta_key='invite_code' AND meta_value='$code'"); 
       echo '<h3>' . $code . ': <small style="font-weight:normal">' . count($users) . ' Users Registered.</small></h3>'; 
      }  
      echo $after_widget; 
     } 
    } 
} # End Class RegisterPlusWidget 

// Start this plugin once all other plugins are fully loaded 
add_action('plugins_loaded', create_function('', 'global $regplus_widget; $regplus_widget = new RegisterPlusWidget();')); 
?> 

回答

1

微件()函數被調用時沒有參數。爲什麼,如果不深入挖掘插件就很難說清楚。你應該問插件的作者。 你可以嘗試添加

// Output the widget contents 
function widget($args) { 
    if (is_array($args)) // Add this 
    extract($args, EXTR_SKIP); 

,看看輸出是否仍然有意義呢。這有效地抑制了導致警告的行爲。如果這是一個在警告關閉的情況下開發的編程錯誤的插件,那已經可以解決問題了。

+3

爲了生活在WPS中可怕的代碼庫的精神,他或許也同樣巴掌@前面;) – Gordon 2010-01-04 11:12:35

+0

@Gordon:你說得對,這將至少是一貫:) – 2010-01-04 11:19:22

+0

THANK YOU!它工作得很好:)! – Qbessi 2010-01-04 11:29:10