capability = 'administrator'; $this->settings_page = awpp_get_instance()->prefix . '-settings'; $this->settings_option = awpp_get_instance()->prefix . '-option'; $this->settings_group = $this->settings_key . '-group'; $this->settings_section = $this->settings_key . '-section'; $this->adminbar_id = awpp_get_instance()->prefix . '_adminbar'; $this->options = get_option( $this->settings_option ); } public function run() { add_action( 'admin_menu', [ $this, 'add_menu_page' ] ); add_action( 'admin_init', [ $this, 'register_settings' ] ); add_action( 'admin_bar_menu', [ $this, 'add_toolbar' ], 90 ); } public function add_menu_page() { add_submenu_page( 'options-general.php', awpp_get_instance()->name, awpp_get_instance()->name, $this->capability, $this->settings_page, [ $this, 'register_settings_page' ] ); } public function register_settings_page() { ?>

name; ?>

settings_group ); do_settings_sections( $this->settings_page ); ?>

Nico Martin - Say Hello GmbH' ); ?>

settings_section; register_setting( $this->settings_group, $this->settings_option, [ $this, 'sanitize' ] ); add_settings_section( $section, __( 'Settings', 'awpp' ), [ $this, 'print_section_info' ], $this->settings_page ); add_settings_field( 'scripts_to_footer', __( 'Move all scripts to footer', 'awpp' ), [ $this, 'scripts_to_footer_callback' ], $this->settings_page, $section ); add_settings_field( 'minify', __( 'Minify CSS and JS Files', 'awpp' ), [ $this, 'minify_callback' ], $this->settings_page, $section ); add_settings_field( 'loadcss', __( 'Load CSS async', 'awpp' ), [ $this, 'loadcss_callback' ], $this->settings_page, $section ); } public function sanitize( $input ) { $checkboxes = [ 'scripts_to_footer', 'defer_scripts', 'loadcss', 'minify' ]; foreach ( $checkboxes as $key ) { if ( isset( $input[ $key ] ) ) { $input[ $key ] = $input[ $key ]; } else { $input[ $key ] = 'off'; } } return $input; } public function print_section_info() { } public function scripts_to_footer_callback() { $key = 'scripts_to_footer'; $val = $this->get_val( $key, 'on' ); printf( '', $this->settings_option, $key, ( 'on' == $val ? 'checked' : '' ) ); } public function minify_callback() { $key = 'minify'; $val = $this->get_val( $key, 'on' ); printf( '', $this->settings_option, $key, ( 'on' == $val ? 'checked' : '' ) ); } public function loadcss_callback() { $key = 'loadcss'; $val = $this->get_val( $key, 'on' ); printf( '', $this->settings_option, $key, ( 'on' == $val ? 'checked' : '' ) ); } public function add_toolbar( $wp_admin_bar ) { $args = [ 'id' => $this->adminbar_id, 'title' => str_replace( 'Advanced ', '', awpp_get_instance()->name ), 'href' => admin_url( 'options-general.php?page=' . $this->settings_page ), 'meta' => [ 'class' => awpp_get_instance()->prefix . '-adminbar', ], ]; $wp_admin_bar->add_node( $args ); } /** * Helpers */ public function get_val( $key, $default = '' ) { if ( isset( $this->options[ $key ] ) ) { return $this->options[ $key ]; } else { return $default; } } }