Need help in the process of creating your own WordPress theme?
The easiest way to create admin settings forms.
Extending the FW_Settings_Form
class. Create {theme}/class-fw-settings-form-test.php
:
<?php if (!defined('FW')) die('Forbidden'); class FW_Settings_Form_Test extends FW_Settings_Form { public function get_values() { return get_option('test_fw_settings_form', array()); } public function set_values($values) { update_option('test_fw_settings_form', $values, false); } public function get_options() { return array( 'tab1' => array( 'type' => 'tab', 'title' => 'Tab #1', 'options' => array( 'opt1' => array( 'type' => 'text', 'label' => 'Option #1' ), 'opt2' => array( 'type' => 'textarea', 'label' => 'Option #2' ), ), ), 'tab2' => array( 'type' => 'tab', 'title' => 'Tab #2', 'options' => array( 'tab2_1' => array( 'type' => 'tab', 'title' => 'Sub Tab #1', 'options' => array( 'opt2_1' => array( 'type' => 'text', 'label' => 'Sub Option #1' ), ), ), 'tab2_2' => array( 'type' => 'tab', 'title' => 'Sub Tab #2', 'options' => array( 'opt2_2' => array( 'type' => 'textarea', 'label' => 'Sub Option #2' ), ), ), ), ), ); } protected function _init() { add_action('admin_menu', array($this, '_action_admin_menu')); add_action('admin_enqueue_scripts', array($this, '_action_admin_enqueue_scripts')); $this->set_is_side_tabs(true); $this->set_is_ajax_submit(true); } /** * @internal */ public function _action_admin_menu() { add_menu_page( 'Test FW Settings Form', 'Test FW Settings Form', 'manage_options', /** used in @see _action_admin_enqueue_scripts() */ 'test-fw-settings-form', array($this, 'render') ); } /** * @internal */ public function _action_admin_enqueue_scripts() { $current_screen = get_current_screen(); // fw_print($current_screen); // enqueue only on settings page if ('toplevel_page_'. 'test-fw-settings-form' === $current_screen->base) { $this->enqueue_static(); } } }
Include and initialize your class. Add in {theme}/functions.php
:
add_action('fw_init', '_action_theme_test_fw_settings_form'); function _action_theme_test_fw_settings_form() { if (class_exists('FW_Settings_Form')) { require_once dirname(__FILE__) . '/class-fw-settings-form-test.php'; new FW_Settings_Form_Test('test'); } }