在wordpress插件类中的foreach

时间:2012-05-08 20:29:53

标签: php wordpress

创建Wordpress插件时遇到了一个小问题。该插件是基于类的,问题似乎与函数内的foreach调用有关。 foreach调用正在迭代数组并使用选项api向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提供的参数无效。

2 个答案:

答案 0 :(得分:0)

$settings数组在哪里声明?它最有可能超出范围。

如果您在var_dump($settings);之前执行foreach,您将获得空。

答案 1 :(得分:0)

您需要将$settings变量放在函数范围内。你可以使用一个参数来做到这一点:

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

或者使用依赖注入(我更喜欢),但我认为这对你和插件来说很难。