Foreach 内部 WordPress 插件类


foreach inside wordpress plugin class

我在创建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 提供的参数无效。

您需要

$settings变量放入函数作用域内。您可以使用参数来执行此操作:

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

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

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

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