2012-05-08 13 views
0

Wordpressプラグインを作成するときに少し問題が発生しました。プラグインはクラスベースで、問題は関数内のforeach呼び出しであるように見えます。 foreach呼び出しは、配列を繰り返し、オプションapiを使用してWordpressにオプションを追加しています。これが正常に動作するように助けていただければ幸いです。foreach inside wordpressプラグインクラス

アレイ

$settings = array(); 
$settings['version'] = '0.1'; 
$settings['release'] = 'development'; 
$settings['license_accepted'] = 'false'; 

機能

public function settings($action) { 
     $supported_actions = array('install', 'update', 'uninstall'); 
     if (in_array($action, $supported_actions) == true) { 
      foreach($settings as $setting => $value) { 
       $current = 'plugin_'.$setting; 
       if ($action == 'install') { 
        add_option($current, $value, null, true); 
       } 
       if ($action == 'update') { 
        update_option($current, $value, null, true); 
       } 
       if ($action == 'uninstall') { 
        delete_option($current); 
       } 
      } 
     } else { 
      return false; 
     } 
} 

問題

警告:foreachのために供給無効な引数。

答えて

0

$settings変数を関数スコープ内に持っていく必要があります。

$settings = array(...); 
$pluginClass->settings($action, $settings); 

するか、依存性注入を(私が好む)使用しますが、私はあなたとプラグインのために困難にあると思う:あなたは、引数を使用してそれを行うことができます。

+0

これは私にとっては難しいことですが、これを以前投稿したソリューションを試してみましたが、「プラグインはアクティブ化中に予想外の出力を398文字生成しました。フィードなどの問題を解決するには、このプラグインを無効にするか削除してください。アクティブになっても動作しますが、このエラーを取り除くためのアイデアは削除されていますか? –

0

$settings配列はどこで宣言されていますか?それは範囲外です。

foreachの前にvar_dump($settings);を入力すると、nullが返されます。