/**
 * Include Implementations
 */
function _wp_fields_api_implementations()
{
    $implementation_dir = WP_FIELDS_API_DIR . 'implementation/wp-includes/fields-api/forms/';
    // User
    require_once $implementation_dir . 'class-wp-fields-api-form-user-edit.php';
    WP_Fields_API_Form_User_Edit::register('user', 'user-edit');
    // Term
    require_once $implementation_dir . 'class-wp-fields-api-form-term.php';
    require_once $implementation_dir . 'class-wp-fields-api-form-term-add.php';
    WP_Fields_API_Form_Term::register('term', 'term-edit');
    WP_Fields_API_Form_Term_Add::register('term', 'term-add');
    // Settings
    require_once $implementation_dir . 'settings/class-wp-fields-api-form-settings.php';
    require_once $implementation_dir . 'settings/class-wp-fields-api-form-settings-general.php';
    WP_Fields_API_Form_Settings_General::register('settings', 'general');
    // Settings API compatibility
    require_once $implementation_dir . 'settings/class-wp-fields-api-settings-api.php';
    // Run Settings API compatibility (has it's own hooks)
    new WP_Fields_API_Settings_API();
    // Post / comment editor support for meta boxes
    add_action('add_meta_boxes', array('WP_Fields_API_Meta_Box_Section', 'add_meta_boxes'), 10, 2);
    // Post types
    WP_Fields_API_Table_Form::register('post', 'post-edit', 'post');
    WP_Fields_API_Table_Form::register('post', 'post-edit', 'page');
    // Comment types
    WP_Fields_API_Table_Form::register('comment', 'comment-edit', 'comment');
}
 /**
  * {@inheritdoc}
  */
 public function render()
 {
     // Add Settings API hidden form fields and nonce
     settings_fields($this->id);
     parent::render();
 }
 /**
  * {@inheritdoc}
  */
 public function save_fields($item_id = null, $object_name = null)
 {
     /**
      * @var $wpdb wpdb
      */
     global $wpdb;
     if (defined('IS_PROFILE_PAGE') && IS_PROFILE_PAGE) {
         /**
          * Fires before the page loads on the 'Your Profile' editing form.
          *
          * The action only fires if the current user is editing their own profile.
          *
          * @since 2.0.0
          *
          * @param int $user_id The user ID.
          */
         do_action('personal_options_update', $item_id);
     } else {
         /**
          * Fires before the page loads on the 'Edit User' form.
          *
          * @since 2.7.0
          *
          * @param int $user_id The user ID.
          */
         do_action('edit_user_profile_update', $item_id);
     }
     // Update the email address in signups, if present.
     if (is_multisite()) {
         $user = get_userdata($item_id);
         if ($user && $user->user_login && isset($_POST['email']) && is_email($_POST['email'])) {
             $signup_id = (int) $wpdb->get_var($wpdb->prepare("SELECT signup_id FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login));
             if (0 < $signup_id) {
                 $wpdb->query($wpdb->prepare("UPDATE {$wpdb->signups} SET user_email = %s WHERE signup_id = %d", $_POST['email'], $signup_id));
             }
         }
     }
     // Update the user.
     $errors = edit_user($item_id);
     global $super_admins;
     // Grant or revoke super admin status if requested.
     if (!defined('IS_PROFILE_PAGE') || !IS_PROFILE_PAGE) {
         if (is_multisite() && is_network_admin() && current_user_can('manage_network_options') && !isset($super_admins) && empty($_POST['super_admin']) == is_super_admin($item_id)) {
             if (empty($_POST['super_admin'])) {
                 revoke_super_admin($item_id);
             } else {
                 grant_super_admin($item_id);
             }
         }
     }
     // Return if not successful
     if (is_wp_error($errors)) {
         return $errors;
     }
     // Save additional fields
     return parent::save_fields($item_id, $object_name);
 }
 /**
  * {@inheritdoc}
  */
 public function save_fields($item_id = null, $object_name = null)
 {
     // Save new term
     $success = wp_update_term($item_id, $object_name, $_POST);
     // Return if not successful
     if (is_wp_error($success)) {
         return $success;
     }
     // Save additional fields
     return parent::save_fields($item_id, $object_name);
 }