page = acf_get_options_page( $plugin_page ); // get post_id (allow lang modification) $this->page['post_id'] = acf_get_valid_post_id( $this->page['post_id'] ); // verify and remove nonce if ( acf_verify_nonce( 'options' ) ) { // save data if ( acf_validate_save_post( true ) ) { // set autoload acf_update_setting( 'autoload', $this->page['autoload'] ); // save acf_save_post( $this->page['post_id'] ); /** * Fires after publishing a save on an options page. * * @since 6.1.7 * * @param string|int $post_id The current id. * @param string $menu_slug The current options page menu slug. */ do_action( 'acf/options_page/save', $this->page['post_id'], $this->page['menu_slug'] ); // redirect wp_redirect( add_query_arg( array( 'message' => '1' ) ) ); exit; } } // load acf scripts acf_enqueue_scripts(); // actions add_action( 'acf/input/admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); add_action( 'acf/input/admin_head', array( $this, 'admin_head' ) ); // add columns support add_screen_option( 'layout_columns', array( 'max' => 2, 'default' => 2, ) ); } /* * admin_enqueue_scripts * * This function will enqueue the 'post.js' script which adds support for 'Screen Options' column toggle * * @type function * @date 23/03/2016 * @since 5.3.2 * * @param * @return */ function admin_enqueue_scripts() { wp_enqueue_script( 'post' ); } /* * admin_head * * This action will find and add field groups to the current edit page * * @type action (admin_head) * @date 23/06/12 * @since 3.1.8 * * @param n/a * @return n/a */ function admin_head() { // get field groups $field_groups = acf_get_field_groups( array( 'options_page' => $this->page['menu_slug'], ) ); // notices if ( ! empty( $_GET['message'] ) && $_GET['message'] == '1' ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Used to display a notice. acf_add_admin_notice( $this->page['updated_message'], 'success' ); } // add submit div add_meta_box( 'submitdiv', __( 'Publish', 'acf' ), array( $this, 'postbox_submitdiv' ), 'acf_options_page', 'side', 'high' ); if ( empty( $field_groups ) ) { acf_add_admin_notice( sprintf( __( 'No Custom Field Groups found for this options page. Create a Custom Field Group', 'acf' ), admin_url( 'post-new.php?post_type=acf-field-group' ) ), 'warning' ); } else { foreach ( $field_groups as $i => $field_group ) { // vars $id = "acf-{$field_group['key']}"; $title = $field_group['title']; $context = $field_group['position']; $priority = 'high'; $args = array( 'field_group' => $field_group ); // tweaks to vars if ( $context == 'acf_after_title' ) { $context = 'normal'; } elseif ( $context == 'side' ) { $priority = 'core'; } // filter for 3rd party customization $priority = apply_filters( 'acf/input/meta_box_priority', $priority, $field_group ); // add meta box add_meta_box( $id, acf_esc_html( $title ), array( $this, 'postbox_acf' ), 'acf_options_page', $context, $priority, $args ); } // foreach } // if } /* * postbox_submitdiv * * This function will render the submitdiv metabox * * @type function * @date 23/03/2016 * @since 5.3.2 * * @param n/a * @return n/a */ function postbox_submitdiv( $post, $args ) { /** * Fires before the major-publishing-actions div. * * @date 24/9/18 * @since 5.7.7 * * @param array $page The current options page. */ do_action( 'acf/options_page/submitbox_before_major_actions', $this->page ); ?>
page ); ?>
$id, 'key' => $field_group['key'], 'style' => $field_group['style'], 'label' => $field_group['label_placement'], 'editLink' => '', 'editTitle' => __( 'Edit field group', 'acf' ), 'visibility' => true, ); // edit_url if ( $field_group['ID'] && acf_current_user_can_admin() ) { $o['editLink'] = admin_url( 'post.php?post=' . $field_group['ID'] . '&action=edit' ); } // load fields $fields = acf_get_fields( $field_group ); // render acf_render_fields( $fields, $this->page['post_id'], 'div', $field_group['instruction_placement'] ); ?> page ); } } // initialize new acf_admin_options_page(); endif; ?>