addObjectMeta($hookPrefix, $provider, $args); } } private function addObjectMeta($hookPrefix, $provider, $args) { add_filter($hookPrefix . 'meta_fields', function ($fields, $model) use ($provider, $args) { $formFields = \is_callable($args['fields_callback']) ? \call_user_func($args['fields_callback'], $model) : []; if (!$formFields) { return $fields; } $settings = \is_callable($args['data_callback']) ? \call_user_func($args['data_callback'], $model) : []; $fields[$provider] = [ 'section_title' => $args['section_title'], 'settings' => $settings, 'fields' => $formFields ]; return $fields; }, 10, 2); add_action($hookPrefix . 'update_meta_settings_' . $provider, function ($settings, $model) use ($args) { if (\is_callable($args['save_callback'])) { \call_user_func($args['save_callback'], $settings, $model); } }, 10, 2); } }