id, array( $this, 'output_sections' ) ); add_action( 'woocommerce_settings_' . $this->id, array( $this, 'output' ) ); add_action( 'woocommerce_settings_save_' . $this->id, array( $this, 'save' ) ); } /** * Get settings page ID. * * @since 3.0.0 * @return string */ public function get_id() { return $this->id; } /** * Get settings page label. * * @since 3.0.0 * @return string */ public function get_label() { return $this->label; } /** * Add this page to settings. * * @param array $pages * * @return mixed */ public function add_settings_page( $pages ) { $pages[ $this->id ] = $this->label; return $pages; } /** * Get settings array. * * @return array */ public function get_settings() { return apply_filters( 'woocommerce_get_settings_' . $this->id, array() ); } /** * Get sections. * * @return array */ public function get_sections() { return apply_filters( 'woocommerce_get_sections_' . $this->id, array() ); } /** * Output sections. */ public function output_sections() { global $current_section; $sections = $this->get_sections(); if ( empty( $sections ) || 1 === sizeof( $sections ) ) { return; } echo '
'; } /** * Output the settings. */ public function output() { $settings = $this->get_settings(); WC_Admin_Settings::output_fields( $settings ); } /** * Save settings. */ public function save() { global $current_section; $settings = $this->get_settings(); WC_Admin_Settings::save_fields( $settings ); if ( $current_section ) { do_action( 'woocommerce_update_options_' . $this->id . '_' . $current_section ); } } } endif;