Btw
Je winkelwagen

Je winkelwagen is leeg.

Instellingentabs, veldtypes en gebruikersvoorkeuren

De instellingenpagina van Addofy bestaat uit tabs. Je plugin kan een tab toevoegen, nieuwe veldtypes registreren voor module-instellingen en voorkeuren per gebruiker bewaren.

Een instellingentab toevoegen

Voeg een tab toe met de filter adba_settings_tabs. Breid AbstractTab uit: die geeft de standaard-capability (manage_options) en form(), dat je velden in het Addofy-formulier verpakt met de nonce en de opslaan-knop.

Addofy voegt het submenu-item toe en controleert de capability en de nonce voordat save() draait.

final class My_Tab extends \AddoBack\Modules\Settings\AbstractTab {
	public function id(): string { return 'myplugin'; }
	public function label(): string { return __( 'My plugin', 'myplugin' ); }
	public function render(): string {
		$value = (string) get_option( 'myplugin_greeting', '' );
		return $this->form( '<p><label>' . esc_html__( 'Greeting', 'myplugin' ) . ' <input name="adba[greeting]" value="' . esc_attr( $value ) . '"></label></p>' );
	}
	public function save( array $input ): array {
		update_option( 'myplugin_greeting', sanitize_text_field( (string) ( $input['greeting'] ?? '' ) ) );
		return array( 'notice' => 'saved', 'args' => array() );
	}
}

add_filter( 'adba_settings_tabs', static function ( array $tabs ) {
	$tabs['myplugin'] = new My_Tab();
	return $tabs;
} );

Gebruik het id van een ingebouwde tab (modules, visibility, menu, views, preferences, tools) om die te vervangen. Ingebouwde tabs kun je verplaatsen, maar niet verwijderen. De ids zijn in 2.30 niet veranderd: visibility heet Toegang en preferences heet Uiterlijk.

Met de filter adba_settings_merged_tabs toon je een tab binnen een andere, als tab-id => host-tab-id. Standaard staat views onderaan visibility. Haal die regel weg en Weergaven krijgt weer een eigen plek in de tabbalk.

Module-instellingen in een paneel

De tab Modules toont alleen de schakelaars. De knop Instellingen op een module opent de velden van zijn settings_schema() in een paneel, of zonder JavaScript als eigen pagina. Geef een veld een priority om zijn plek te bepalen: lager komt eerst, de standaard is 10 en bij gelijke waarden blijft de volgorde van de declaratie.

'limit' => array(
	'type'     => 'number',
	'label'    => __( 'Rows', 'myplugin' ),
	'default'  => 5,
	'priority' => 5,
),

Instellingen van de tab Uiterlijk die bij een module horen, staan in het paneel van die module. De filter adba_settings_panel_keys koppelt een config-sleutel aan een module-id; haal een sleutel weg om hem weer op Uiterlijk te tonen. Waar een instelling wordt opgeslagen verandert niet.

Je instellingen vindbaar maken

Instellingen zoeken en het commandopalet vinden elk veld uit een moduleschema vanzelf, en een eigen tab op zijn naam. Voeg de losse instellingen van je eigen tab toe met adba_settings_index. Elke regel heeft een label en een url nodig; zet #id van de rij achter de url om hem te markeren.

add_filter( 'adba_settings_index', static function ( array $entries ) {
	$entries[] = array(
		'key'         => 'myplugin_greeting',
		'label'       => __( 'Greeting', 'myplugin' ),
		'description' => __( 'Text above the dashboard.', 'myplugin' ),
		'place'       => __( 'My plugin', 'myplugin' ),
		'url'         => \AddoBack\Modules\Settings\Page::url( 'myplugin' ) . '#myplugin-greeting',
	);
	return $entries;
} );

Een veldtype registreren

Registreer een veldtype op de action adba_register_fields:

add_action( 'adba_register_fields', static function ( $schema ) {
	$schema->register_field( new My_Field() );
} );

Een bestaand type registreren vervangt het: de laatste registratie wint. Het type text blijft altijd bestaan als terugval.

Gebruikersvoorkeuren

Registreer een voorkeur en lees en schrijf hem zoals de voorkeuren van Addofy zelf:

add_filter( 'adba_user_prefs', static function ( array $prefs ) {
	$prefs['myplugin_layout'] = array( 'values' => array( 'grid', 'list' ), 'default' => 'list' );
	$prefs['myplugin_tips']   = array( 'values' => 'bool', 'default' => true );
	return $prefs;
} );
adba.prefs.set( 'myplugin_layout', 'grid' ); // Saved to user meta, synced to other tabs.
adba.prefs.get( 'myplugin_layout', 'list' );

Sleutels hebben het prefix van je plugin nodig. De eigen sleutels van Addofy (theme, density, mode, focus, shortcuts, guides_on) kun je niet opnieuw definiëren.

In PHP heeft de service prefs de methodes effective(), stored(), defaults(), update() en extension_defs(). Store::extension_prefs() werkt nog, maar is deprecated; Store::all_prefs() is verwijderd in 2.34.0.

Gerelateerd

Klaar om je AI te koppelen aan echte tools?

Start gratis proefperiode