This is a library which helps adding custom settings pages for WordPress plugins and themes.
require_once( 'vendor/autoload.php' );
use underDEV\Utils\Settings\CoreFields;
class SettingsExample {
public function __construct() {
// init library with your handle
$this->settings = new underDEV\Utils\Settings( 'example' );
// register menu as always
add_action( 'admin_menu', array( $this, 'register_menu' ) );
// register some settings
add_action( 'init', array( $this, 'register_settings' ) );
}
public function register_menu() {
// pass the page hook to library to load scripts only on settings pages
$this->settings->page_hook = add_options_page(
__( 'Example Settings' ),
__( 'Example Settings' ),
'manage_options',
'example-settings',
array( $this->settings, 'settings_page' )
);
}
public function register_settings() {
$general = $this->settings->add_section( __( 'General' ), 'general' );
$general->add_group( __( 'Pages' ), 'pages' )
->add_field( array(
'name' => __( 'Results Page' ),
'slug' => 'results',
'addons' => array(
'pretty' => true,
'options' => array( 'asd1', 'asd2', 'asd3' )
),
'description' => __( 'The page that will be used for the search results.' ),
'render' => array( new CoreFields\Select(), 'input' ),
'sanitize' => array( new CoreFields\Select(), 'sanitize' ),
) )
->description( __( 'These are the default Pages plugin will use to display it\'s content' ) );
}
}
new SettingsExample;