Saber Commerce extensions should use the same method that core components use to register settings pages. This is easy enough to do using the filter sacom_setting_page_register. The filter callback provides 1 argument, the array of settings pages.
Using an anonymous function callback the filter usage looks like this:
add_filter( 'sacom_setting_page_register', function( $pages ) {
// Add page(s) to the array.
}
A more full example below shows how we can create a page object using \stdClass (or stdClass if in a non-namespaced environment). This page object is then added to the array and returned.
add_filter( 'sacom_setting_page_register', function( $pages ) {
$page = new \stdClass;
$page->key = 'tax';
$page->title = __( 'Taxes', 'saber-commerce' );
$page->menuLabel = __( 'Taxes', 'saber-commerce' );
$pages[] = $page;
return $pages;
});
The sacom_setting_page_register filter should not be called before the “init” action hook.
In the example above we create only a blank page. The purpose of the setting page of course is to display settings fields that the user can interact with and save. There is a SettingsField class used for this purpose which extends Saber Commerce core Fields and has all of the same functionality.
Below is an example of defining a text field and adding it to our new settings page:
@TODO add example referenced above. SORRY 🙁